@aws/agentcore 1.0.0-preview.2 → 1.0.0-preview.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 +193 -33
- package/dist/agent-inspector/index.css +1 -1
- package/dist/agent-inspector/index.js +99 -84
- package/dist/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +3132 -366
- package/dist/assets/__tests__/__snapshots__/dockerfile-render.test.ts.snap +6 -2
- package/dist/assets/__tests__/assets.snapshot.test.ts +10 -24
- package/dist/assets/__tests__/googleadk-session-eviction.test.ts +87 -0
- package/dist/assets/__tests__/summarization-namespace.test.ts +43 -0
- package/dist/assets/agents/AGENTS.md +87 -11
- package/dist/assets/cdk/bin/cdk.ts +87 -26
- package/dist/assets/cdk/lib/cdk-stack.ts +185 -55
- package/dist/assets/cdk/package.json +1 -1
- package/dist/assets/cdk/test/cdk.test.ts +4 -0
- package/dist/assets/container/python/Dockerfile +7 -1
- package/dist/assets/container/typescript/Dockerfile +25 -0
- package/dist/assets/container/typescript/dockerignore.template +24 -0
- package/dist/assets/datasets/predefined-v1.jsonl +3 -0
- package/dist/assets/datasets/simulated-v1.jsonl +3 -0
- package/dist/assets/python/a2a/googleadk/base/main.py +24 -16
- package/dist/assets/python/a2a/googleadk/base/pyproject.toml +3 -3
- package/dist/assets/python/a2a/langchain_langgraph/base/main.py +24 -16
- package/dist/assets/python/a2a/langchain_langgraph/base/pyproject.toml +3 -2
- package/dist/assets/python/a2a/strands/base/main.py +23 -17
- package/dist/assets/python/a2a/strands/base/pyproject.toml +2 -2
- package/dist/assets/python/a2a/strands/capabilities/memory/session.py +10 -2
- package/dist/assets/python/agui/googleadk/base/main.py +62 -2
- package/dist/assets/python/agui/googleadk/base/pyproject.toml +3 -3
- package/dist/assets/python/agui/langchain_langgraph/base/main.py +56 -0
- package/dist/assets/python/agui/langchain_langgraph/base/pyproject.toml +2 -1
- package/dist/assets/python/agui/strands/base/main.py +63 -1
- package/dist/assets/python/agui/strands/base/pyproject.toml +1 -1
- package/dist/assets/python/agui/strands/capabilities/memory/session.py +10 -2
- package/dist/assets/python/http/autogen/base/main.py +60 -29
- package/dist/assets/python/http/autogen/base/pyproject.toml +1 -1
- package/dist/assets/python/http/googleadk/base/main.py +69 -24
- package/dist/assets/python/http/googleadk/base/mcp_client/client.py +7 -7
- package/dist/assets/python/http/googleadk/base/pyproject.toml +2 -1
- package/dist/assets/python/http/langchain_langgraph/base/main.py +115 -24
- package/dist/assets/python/http/langchain_langgraph/base/mcp_client/client.py +10 -8
- package/dist/assets/python/http/langchain_langgraph/base/pyproject.toml +3 -2
- package/dist/assets/python/http/openaiagents/base/main.py +61 -32
- package/dist/assets/python/http/openaiagents/base/mcp_client/client.py +4 -4
- package/dist/assets/python/http/openaiagents/base/pyproject.toml +2 -2
- package/dist/assets/python/http/strands/base/main.py +571 -47
- package/dist/assets/python/http/strands/base/mcp_client/client.py +49 -6
- package/dist/assets/python/http/strands/base/model/load.py +119 -3
- package/dist/assets/python/http/strands/base/model/mantle_compat.py +21 -0
- package/dist/assets/python/http/strands/base/pyproject.toml +9 -3
- package/dist/assets/python/http/strands/base/skills/fetcher.py +279 -0
- package/dist/assets/python/http/strands/capabilities/execution-limits/hooks/execution_limits.py +54 -0
- package/dist/assets/python/http/strands/capabilities/memory/session.py +10 -2
- package/dist/assets/python/http/strands/capabilities/payments/__init__.py +4 -0
- package/dist/assets/python/http/strands/capabilities/payments/payments.py +142 -0
- package/dist/assets/python/mcp/standalone/base/main.py +58 -0
- package/dist/assets/typescript/http/strands/base/README.md +37 -0
- package/dist/assets/typescript/http/strands/base/gitignore.template +22 -0
- package/dist/assets/typescript/http/strands/base/main.ts +144 -0
- package/dist/assets/typescript/http/strands/base/mcp_client/client.ts +11 -0
- package/dist/assets/typescript/http/strands/base/model/load.ts +102 -0
- package/dist/assets/typescript/http/strands/base/package.json +38 -0
- package/dist/assets/typescript/http/strands/base/tsconfig.json +19 -0
- package/dist/assets/typescript/http/strands/capabilities/memory/memory.ts +52 -0
- package/dist/assets/typescript/http/vercelai/base/README.md +37 -0
- package/dist/assets/typescript/http/vercelai/base/gitignore.template +22 -0
- package/dist/assets/typescript/http/vercelai/base/main.ts +64 -0
- package/dist/assets/typescript/http/vercelai/base/model/load.ts +121 -0
- package/dist/assets/typescript/http/vercelai/base/package.json +35 -0
- package/dist/assets/typescript/http/vercelai/base/tsconfig.json +19 -0
- package/dist/cli/index.mjs +1443 -569
- package/dist/lib/constants.d.ts +8 -4
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +13 -7
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/errors/index.d.ts +1 -1
- package/dist/lib/errors/index.d.ts.map +1 -1
- package/dist/lib/errors/index.js +1 -1
- package/dist/lib/errors/index.js.map +1 -1
- package/dist/lib/errors/types.d.ts +259 -0
- package/dist/lib/errors/types.d.ts.map +1 -0
- package/dist/lib/errors/types.js +402 -0
- package/dist/lib/errors/types.js.map +1 -0
- package/dist/lib/errors/zod.d.ts +8 -0
- package/dist/lib/errors/zod.d.ts.map +1 -0
- package/dist/lib/errors/{config.js → zod.js} +8 -81
- package/dist/lib/errors/zod.js.map +1 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +4 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/packaging/build-args.d.ts +6 -0
- package/dist/lib/packaging/build-args.d.ts.map +1 -1
- package/dist/lib/packaging/build-args.js +11 -2
- package/dist/lib/packaging/build-args.js.map +1 -1
- package/dist/lib/packaging/build-context-dockerignore.d.ts +23 -0
- package/dist/lib/packaging/build-context-dockerignore.d.ts.map +1 -0
- package/dist/lib/packaging/build-context-dockerignore.js +63 -0
- package/dist/lib/packaging/build-context-dockerignore.js.map +1 -0
- package/dist/lib/packaging/build-context.d.ts +21 -0
- package/dist/lib/packaging/build-context.d.ts.map +1 -0
- package/dist/lib/packaging/build-context.js +21 -0
- package/dist/lib/packaging/build-context.js.map +1 -0
- package/dist/lib/packaging/container.d.ts.map +1 -1
- package/dist/lib/packaging/container.js +20 -9
- package/dist/lib/packaging/container.js.map +1 -1
- package/dist/lib/packaging/helpers.d.ts +16 -0
- package/dist/lib/packaging/helpers.d.ts.map +1 -1
- package/dist/lib/packaging/helpers.js +127 -29
- package/dist/lib/packaging/helpers.js.map +1 -1
- package/dist/lib/packaging/index.d.ts +2 -1
- package/dist/lib/packaging/index.d.ts.map +1 -1
- package/dist/lib/packaging/index.js +9 -20
- package/dist/lib/packaging/index.js.map +1 -1
- package/dist/lib/packaging/node.d.ts +2 -2
- package/dist/lib/packaging/node.d.ts.map +1 -1
- package/dist/lib/packaging/node.js +83 -38
- package/dist/lib/packaging/node.js.map +1 -1
- package/dist/lib/packaging/python.js +12 -12
- package/dist/lib/packaging/python.js.map +1 -1
- package/dist/lib/result.d.ts +50 -0
- package/dist/lib/result.d.ts.map +1 -0
- package/dist/lib/result.js +49 -0
- package/dist/lib/result.js.map +1 -0
- package/dist/lib/schemas/io/config-io.d.ts +8 -0
- package/dist/lib/schemas/io/config-io.d.ts.map +1 -1
- package/dist/lib/schemas/io/config-io.js +21 -3
- package/dist/lib/schemas/io/config-io.js.map +1 -1
- package/dist/lib/schemas/io/global-config.d.ts +40 -0
- package/dist/lib/schemas/io/global-config.d.ts.map +1 -0
- package/dist/lib/schemas/io/global-config.js +118 -0
- package/dist/lib/schemas/io/global-config.js.map +1 -0
- package/dist/lib/schemas/io/index.d.ts +1 -2
- package/dist/lib/schemas/io/index.d.ts.map +1 -1
- package/dist/lib/schemas/io/index.js +1 -4
- package/dist/lib/schemas/io/index.js.map +1 -1
- package/dist/lib/schemas/io/path-resolver.d.ts +0 -6
- package/dist/lib/schemas/io/path-resolver.d.ts.map +1 -1
- package/dist/lib/schemas/io/path-resolver.js +3 -13
- package/dist/lib/schemas/io/path-resolver.js.map +1 -1
- package/dist/lib/secrets/cipher.d.ts +12 -0
- package/dist/lib/secrets/cipher.d.ts.map +1 -0
- package/dist/lib/secrets/cipher.js +54 -0
- package/dist/lib/secrets/cipher.js.map +1 -0
- package/dist/lib/secrets/index.d.ts +4 -0
- package/dist/lib/secrets/index.d.ts.map +1 -0
- package/dist/lib/secrets/index.js +15 -0
- package/dist/lib/secrets/index.js.map +1 -0
- package/dist/lib/secrets/key-provider.d.ts +16 -0
- package/dist/lib/secrets/key-provider.d.ts.map +1 -0
- package/dist/lib/secrets/key-provider.js +191 -0
- package/dist/lib/secrets/key-provider.js.map +1 -0
- package/dist/lib/secrets/sensitive-keys.d.ts +21 -0
- package/dist/lib/secrets/sensitive-keys.d.ts.map +1 -0
- package/dist/lib/secrets/sensitive-keys.js +67 -0
- package/dist/lib/secrets/sensitive-keys.js.map +1 -0
- package/dist/lib/time-constants.d.ts +5 -0
- package/dist/lib/time-constants.d.ts.map +1 -0
- package/dist/lib/time-constants.js +8 -0
- package/dist/lib/time-constants.js.map +1 -0
- package/dist/lib/utils/env.d.ts +8 -2
- package/dist/lib/utils/env.d.ts.map +1 -1
- package/dist/lib/utils/env.js +65 -17
- package/dist/lib/utils/env.js.map +1 -1
- package/dist/lib/utils/index.d.ts +3 -2
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +6 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/polling.d.ts +31 -0
- package/dist/lib/utils/polling.d.ts.map +1 -0
- package/dist/lib/utils/polling.js +61 -0
- package/dist/lib/utils/polling.js.map +1 -0
- package/dist/lib/utils/zod.d.ts +16 -0
- package/dist/lib/utils/zod.d.ts.map +1 -1
- package/dist/lib/utils/zod.js +45 -0
- package/dist/lib/utils/zod.js.map +1 -1
- package/dist/schema/constants.d.ts +56 -2
- package/dist/schema/constants.d.ts.map +1 -1
- package/dist/schema/constants.js +82 -7
- package/dist/schema/constants.js.map +1 -1
- package/dist/schema/schemas/agent-env.d.ts +178 -6
- package/dist/schema/schemas/agent-env.d.ts.map +1 -1
- package/dist/schema/schemas/agent-env.js +302 -27
- package/dist/schema/schemas/agent-env.js.map +1 -1
- package/dist/schema/schemas/agentcore-project.d.ts +450 -11
- package/dist/schema/schemas/agentcore-project.d.ts.map +1 -1
- package/dist/schema/schemas/agentcore-project.js +283 -18
- package/dist/schema/schemas/agentcore-project.js.map +1 -1
- package/dist/schema/schemas/auth.d.ts +174 -0
- package/dist/schema/schemas/auth.d.ts.map +1 -1
- package/dist/schema/schemas/auth.js +127 -3
- package/dist/schema/schemas/auth.js.map +1 -1
- package/dist/schema/schemas/aws-targets.d.ts +12 -0
- package/dist/schema/schemas/aws-targets.d.ts.map +1 -1
- package/dist/schema/schemas/aws-targets.js +4 -0
- package/dist/schema/schemas/aws-targets.js.map +1 -1
- package/dist/schema/schemas/connections.d.ts +185 -0
- package/dist/schema/schemas/connections.d.ts.map +1 -0
- package/dist/schema/schemas/connections.js +176 -0
- package/dist/schema/schemas/connections.js.map +1 -0
- package/dist/schema/schemas/deployed-state.d.ts +361 -5
- package/dist/schema/schemas/deployed-state.d.ts.map +1 -1
- package/dist/schema/schemas/deployed-state.js +105 -2
- package/dist/schema/schemas/deployed-state.js.map +1 -1
- package/dist/schema/schemas/index.d.ts +1 -0
- package/dist/schema/schemas/index.d.ts.map +1 -1
- package/dist/schema/schemas/index.js +1 -0
- package/dist/schema/schemas/index.js.map +1 -1
- package/dist/schema/schemas/mcp-defs.d.ts +2 -1
- package/dist/schema/schemas/mcp-defs.d.ts.map +1 -1
- package/dist/schema/schemas/mcp-defs.js +3 -2
- package/dist/schema/schemas/mcp-defs.js.map +1 -1
- package/dist/schema/schemas/mcp.d.ts +199 -0
- package/dist/schema/schemas/mcp.d.ts.map +1 -1
- package/dist/schema/schemas/mcp.js +343 -6
- package/dist/schema/schemas/mcp.js.map +1 -1
- package/dist/schema/schemas/primitives/ab-test.d.ts +135 -0
- package/dist/schema/schemas/primitives/ab-test.d.ts.map +1 -0
- package/dist/schema/schemas/primitives/ab-test.js +95 -0
- package/dist/schema/schemas/primitives/ab-test.js.map +1 -0
- package/dist/schema/schemas/primitives/config-bundle.d.ts +32 -0
- package/dist/schema/schemas/primitives/config-bundle.d.ts.map +1 -0
- package/dist/schema/schemas/primitives/config-bundle.js +41 -0
- package/dist/schema/schemas/primitives/config-bundle.js.map +1 -0
- package/dist/schema/schemas/primitives/dataset.d.ts +48 -0
- package/dist/schema/schemas/primitives/dataset.d.ts.map +1 -0
- package/dist/schema/schemas/primitives/dataset.js +58 -0
- package/dist/schema/schemas/primitives/dataset.js.map +1 -0
- package/dist/schema/schemas/primitives/evaluator.d.ts +8 -0
- package/dist/schema/schemas/primitives/evaluator.d.ts.map +1 -1
- package/dist/schema/schemas/primitives/evaluator.js +17 -1
- package/dist/schema/schemas/primitives/evaluator.js.map +1 -1
- package/dist/schema/schemas/primitives/harness.d.ts +377 -19
- package/dist/schema/schemas/primitives/harness.d.ts.map +1 -1
- package/dist/schema/schemas/primitives/harness.js +379 -24
- package/dist/schema/schemas/primitives/harness.js.map +1 -1
- package/dist/schema/schemas/primitives/index.d.ts +13 -7
- package/dist/schema/schemas/primitives/index.d.ts.map +1 -1
- package/dist/schema/schemas/primitives/index.js +37 -1
- package/dist/schema/schemas/primitives/index.js.map +1 -1
- package/dist/schema/schemas/primitives/knowledge-base.d.ts +104 -0
- package/dist/schema/schemas/primitives/knowledge-base.d.ts.map +1 -0
- package/dist/schema/schemas/primitives/knowledge-base.js +99 -0
- package/dist/schema/schemas/primitives/knowledge-base.js.map +1 -0
- package/dist/schema/schemas/primitives/memory.d.ts +22 -4
- package/dist/schema/schemas/primitives/memory.d.ts.map +1 -1
- package/dist/schema/schemas/primitives/memory.js +57 -16
- package/dist/schema/schemas/primitives/memory.js.map +1 -1
- package/dist/schema/schemas/primitives/online-eval-config.d.ts +21 -2
- package/dist/schema/schemas/primitives/online-eval-config.d.ts.map +1 -1
- package/dist/schema/schemas/primitives/online-eval-config.js +45 -5
- package/dist/schema/schemas/primitives/online-eval-config.js.map +1 -1
- package/dist/schema/schemas/primitives/payment.d.ts +54 -0
- package/dist/schema/schemas/primitives/payment.d.ts.map +1 -0
- package/dist/schema/schemas/primitives/payment.js +79 -0
- package/dist/schema/schemas/primitives/payment.js.map +1 -0
- package/dist/schema/schemas/primitives/policy.d.ts +26 -0
- package/dist/schema/schemas/primitives/policy.d.ts.map +1 -1
- package/dist/schema/schemas/primitives/policy.js +5 -1
- package/dist/schema/schemas/primitives/policy.js.map +1 -1
- package/npm-shrinkwrap.json +17013 -0
- package/package.json +43 -21
- package/scripts/bump-version.ts +4 -4
- package/scripts/bundle.mjs +70 -41
- package/scripts/extract-cli-model.mjs +228 -0
- package/scripts/render_adoc.py +274 -0
- package/scripts/run-e2e-dev.sh +56 -0
- package/scripts/run-e2e-local.sh +145 -0
- package/dist/lib/errors/config.d.ts +0 -49
- package/dist/lib/errors/config.d.ts.map +0 -1
- package/dist/lib/errors/config.js.map +0 -1
- package/dist/lib/packaging/errors.d.ts +0 -16
- package/dist/lib/packaging/errors.d.ts.map +0 -1
- package/dist/lib/packaging/errors.js +0 -36
- package/dist/lib/packaging/errors.js.map +0 -1
- package/dist/lib/schemas/io/cli-config.d.ts +0 -12
- package/dist/lib/schemas/io/cli-config.d.ts.map +0 -1
- package/dist/lib/schemas/io/cli-config.js +0 -35
- package/dist/lib/schemas/io/cli-config.js.map +0 -1
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# render_adoc.py — shared doc-model -> AsciiDoc renderer
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Renders a normalized "doc-model" JSON (produced by any of the three
|
|
6
|
+
# extractors) into .adoc files for the documentation repository.
|
|
7
|
+
#
|
|
8
|
+
# It is deliberately source-agnostic: the Python extractor, the TypeScript
|
|
9
|
+
# TypeDoc extractor, and the CLI --help extractor all emit the SAME doc-model
|
|
10
|
+
# schema, so this one renderer produces consistent output for all three.
|
|
11
|
+
#
|
|
12
|
+
# NOTE: if these workflows are later consolidated into a single shared reusable
|
|
13
|
+
# workflow, this file is vendored there ONCE and every source repo's caller
|
|
14
|
+
# invokes it. Keep it dependency-free (stdlib only) so it drops cleanly into any
|
|
15
|
+
# runner.
|
|
16
|
+
#
|
|
17
|
+
# -----------------------------------------------------------------------------
|
|
18
|
+
# doc-model schema (v1) — the contract every extractor must emit:
|
|
19
|
+
# {
|
|
20
|
+
# "source": "python-sdk" | "ts-sdk" | "cli",
|
|
21
|
+
# "package": "bedrock-agentcore",
|
|
22
|
+
# "version": "1.16.0",
|
|
23
|
+
# "language": "python" | "typescript" | "cli",
|
|
24
|
+
# "groups": [ # a group -> one .adoc file
|
|
25
|
+
# {
|
|
26
|
+
# "id": "runtime", # -> <prefix>-runtime.adoc, and anchor id
|
|
27
|
+
# "title": "Runtime",
|
|
28
|
+
# "summary": "Runtime management and application context.",
|
|
29
|
+
# "entries": [ # classes / functions / commands
|
|
30
|
+
# {
|
|
31
|
+
# "kind": "class" | "function" | "command",
|
|
32
|
+
# "name": "BedrockAgentCoreApp",
|
|
33
|
+
# "signature": "BedrockAgentCoreApp(params)",
|
|
34
|
+
# "summary": "one-line summary",
|
|
35
|
+
# "description": "longer prose (optional)",
|
|
36
|
+
# "params": [ {"name","type","required","description"} ],
|
|
37
|
+
# "returns": {"type","description"} | null,
|
|
38
|
+
# "raises": [ {"type","description"} ],
|
|
39
|
+
# "examples": [ {"lang","code"} ],
|
|
40
|
+
# "members": [ <entry>, ... ] # methods on a class (recursive)
|
|
41
|
+
# }
|
|
42
|
+
# ]
|
|
43
|
+
# }
|
|
44
|
+
# ]
|
|
45
|
+
# }
|
|
46
|
+
# -----------------------------------------------------------------------------
|
|
47
|
+
|
|
48
|
+
import argparse
|
|
49
|
+
import json
|
|
50
|
+
import os
|
|
51
|
+
import re
|
|
52
|
+
import sys
|
|
53
|
+
import textwrap
|
|
54
|
+
|
|
55
|
+
SCHEMA_VERSION = 1
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def esc(text):
|
|
59
|
+
"""Escape AsciiDoc-significant characters in inline text."""
|
|
60
|
+
if not text:
|
|
61
|
+
return ""
|
|
62
|
+
# Guard the couple of chars that start AsciiDoc markup in running prose.
|
|
63
|
+
return (
|
|
64
|
+
text.replace("|", "\\|")
|
|
65
|
+
.replace("{", "\\{")
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
# Match markdown code fences that may be indented (reST/Google docstrings often
|
|
70
|
+
# indent example blocks). `re.MULTILINE` lets ^ match each line start; the
|
|
71
|
+
# leading-whitespace groups are stripped from the captured code.
|
|
72
|
+
_FENCE_RE = re.compile(r"^[ \t]*```(\w*)[ \t]*\n(.*?)\n[ \t]*```[ \t]*$", re.DOTALL | re.MULTILINE)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def render_prose(text):
|
|
76
|
+
"""Render description prose that may contain markdown ``` code fences.
|
|
77
|
+
|
|
78
|
+
Docstrings/TSDoc frequently embed fenced code blocks in the description
|
|
79
|
+
(not just in @example). Left alone they leak literal backticks into the
|
|
80
|
+
AsciiDoc. Split the prose on fences: escape the prose spans, and convert
|
|
81
|
+
each fenced block into an AsciiDoc [source] block (verbatim, not escaped).
|
|
82
|
+
"""
|
|
83
|
+
if not text:
|
|
84
|
+
return []
|
|
85
|
+
out = []
|
|
86
|
+
pos = 0
|
|
87
|
+
for m in _FENCE_RE.finditer(text):
|
|
88
|
+
before = text[pos:m.start()].strip()
|
|
89
|
+
if before:
|
|
90
|
+
out.append(esc(before))
|
|
91
|
+
out.append("")
|
|
92
|
+
lang = m.group(1) or ""
|
|
93
|
+
out.append(f"[source,{lang}]" if lang else "[source]")
|
|
94
|
+
out.append("----")
|
|
95
|
+
# Dedent the captured code (fences are often indented in docstrings).
|
|
96
|
+
out.append(textwrap.dedent(m.group(2)).rstrip())
|
|
97
|
+
out.append("----")
|
|
98
|
+
out.append("")
|
|
99
|
+
pos = m.end()
|
|
100
|
+
tail = text[pos:].strip()
|
|
101
|
+
if tail:
|
|
102
|
+
out.append(esc(tail))
|
|
103
|
+
return out
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def block(lines):
|
|
107
|
+
return "\n".join(lines)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def render_params(params, out):
|
|
111
|
+
if not params:
|
|
112
|
+
return
|
|
113
|
+
out.append("*Parameters*")
|
|
114
|
+
out.append("")
|
|
115
|
+
for p in params:
|
|
116
|
+
req = "" if p.get("required") else " _(optional)_"
|
|
117
|
+
typ = f"`{p['type']}`" if p.get("type") else ""
|
|
118
|
+
out.append(f"`{p['name']}`{req} {typ}::")
|
|
119
|
+
out.append(esc(p.get("description", "")) or "_No description._")
|
|
120
|
+
out.append("")
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def render_returns(returns, out):
|
|
124
|
+
if not returns:
|
|
125
|
+
return
|
|
126
|
+
typ = f"`{returns['type']}` — " if returns.get("type") else ""
|
|
127
|
+
out.append("*Returns*")
|
|
128
|
+
out.append("")
|
|
129
|
+
out.append(f"{typ}{esc(returns.get('description', ''))}".strip())
|
|
130
|
+
out.append("")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def render_raises(raises, out):
|
|
134
|
+
if not raises:
|
|
135
|
+
return
|
|
136
|
+
out.append("*Raises*")
|
|
137
|
+
out.append("")
|
|
138
|
+
for r in raises:
|
|
139
|
+
out.append(f"`{r.get('type', 'Error')}`:: {esc(r.get('description', ''))}")
|
|
140
|
+
out.append("")
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def clean_example_code(code):
|
|
144
|
+
"""Strip stray markdown fence lines from example code.
|
|
145
|
+
|
|
146
|
+
Extractors try to remove ``` fences, but real docstrings put them mid-buffer
|
|
147
|
+
(e.g. a fence followed by extra "Notes:"/"Thread Safety:" prose swept into
|
|
148
|
+
the example). Since this text is already going inside an AsciiDoc [source]
|
|
149
|
+
block, any line that is just a fence is spurious — drop it, and drop trailing
|
|
150
|
+
non-code prose that follows a closing fence.
|
|
151
|
+
"""
|
|
152
|
+
lines = code.split("\n")
|
|
153
|
+
kept = []
|
|
154
|
+
closed = False
|
|
155
|
+
for line in lines:
|
|
156
|
+
if re.match(r"^[ \t]*```", line):
|
|
157
|
+
# A closing fence marks the end of the real code; ignore the fence
|
|
158
|
+
# line itself and stop taking subsequent prose.
|
|
159
|
+
if kept:
|
|
160
|
+
closed = True
|
|
161
|
+
continue
|
|
162
|
+
if closed and line.strip() == "":
|
|
163
|
+
continue
|
|
164
|
+
if closed and line.strip():
|
|
165
|
+
break # prose after the closing fence — not part of the example
|
|
166
|
+
kept.append(line)
|
|
167
|
+
return textwrap.dedent("\n".join(kept)).strip()
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def render_examples(examples, out):
|
|
171
|
+
for ex in examples or []:
|
|
172
|
+
lang = ex.get("lang", "text")
|
|
173
|
+
code = clean_example_code(ex.get("code", ""))
|
|
174
|
+
if not code:
|
|
175
|
+
continue
|
|
176
|
+
out.append(f"[source,{lang}]")
|
|
177
|
+
out.append("----")
|
|
178
|
+
out.append(code)
|
|
179
|
+
out.append("----")
|
|
180
|
+
out.append("")
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def render_entry(entry, level, out):
|
|
184
|
+
"""Render a single class/function/command as an AsciiDoc section."""
|
|
185
|
+
heading = "=" * level
|
|
186
|
+
name = entry.get("name", "")
|
|
187
|
+
out.append(f"{heading} {name}")
|
|
188
|
+
out.append("")
|
|
189
|
+
|
|
190
|
+
sig = entry.get("signature")
|
|
191
|
+
if sig:
|
|
192
|
+
out.append("[source]")
|
|
193
|
+
out.append("----")
|
|
194
|
+
out.append(sig)
|
|
195
|
+
out.append("----")
|
|
196
|
+
out.append("")
|
|
197
|
+
|
|
198
|
+
if entry.get("summary"):
|
|
199
|
+
out.extend(render_prose(entry["summary"]))
|
|
200
|
+
out.append("")
|
|
201
|
+
if entry.get("description"):
|
|
202
|
+
out.extend(render_prose(entry["description"]))
|
|
203
|
+
out.append("")
|
|
204
|
+
|
|
205
|
+
render_params(entry.get("params"), out)
|
|
206
|
+
render_returns(entry.get("returns"), out)
|
|
207
|
+
render_raises(entry.get("raises"), out)
|
|
208
|
+
render_examples(entry.get("examples"), out)
|
|
209
|
+
|
|
210
|
+
# methods / subcommands nest one heading level deeper
|
|
211
|
+
for member in entry.get("members", []):
|
|
212
|
+
render_entry(member, level + 1, out)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def render_group(group, model, prefix):
|
|
216
|
+
"""Render one group -> one .adoc file body (string)."""
|
|
217
|
+
out = []
|
|
218
|
+
gid = group["id"]
|
|
219
|
+
# AsciiDoc anchor so the TOC / other pages can xref into it.
|
|
220
|
+
out.append(f"[[{prefix}-{gid}]]")
|
|
221
|
+
out.append(f"= {group['title']}")
|
|
222
|
+
out.append("")
|
|
223
|
+
out.append(
|
|
224
|
+
f"_Auto-generated from `{model['package']}` "
|
|
225
|
+
f"v{model['version']} — do not edit by hand._"
|
|
226
|
+
)
|
|
227
|
+
out.append("")
|
|
228
|
+
if group.get("summary"):
|
|
229
|
+
out.extend(render_prose(group["summary"]))
|
|
230
|
+
out.append("")
|
|
231
|
+
|
|
232
|
+
for entry in group.get("entries", []):
|
|
233
|
+
render_entry(entry, level=2, out=out)
|
|
234
|
+
|
|
235
|
+
return block(out).rstrip() + "\n"
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def main():
|
|
239
|
+
ap = argparse.ArgumentParser(description="Render doc-model JSON to .adoc")
|
|
240
|
+
ap.add_argument("--model", required=True, help="path to doc-model JSON")
|
|
241
|
+
ap.add_argument("--out-dir", required=True, help="output dir for .adoc files")
|
|
242
|
+
ap.add_argument(
|
|
243
|
+
"--prefix",
|
|
244
|
+
required=True,
|
|
245
|
+
help="filename + anchor prefix, e.g. 'python-sdk', 'ts-sdk', 'cli'",
|
|
246
|
+
)
|
|
247
|
+
args = ap.parse_args()
|
|
248
|
+
|
|
249
|
+
with open(args.model) as f:
|
|
250
|
+
model = json.load(f)
|
|
251
|
+
|
|
252
|
+
os.makedirs(args.out_dir, exist_ok=True)
|
|
253
|
+
written = []
|
|
254
|
+
for group in model.get("groups", []):
|
|
255
|
+
body = render_group(group, model, args.prefix)
|
|
256
|
+
fname = f"{args.prefix}-{group['id']}.adoc"
|
|
257
|
+
path = os.path.join(args.out_dir, fname)
|
|
258
|
+
with open(path, "w") as f:
|
|
259
|
+
f.write(body)
|
|
260
|
+
written.append(fname)
|
|
261
|
+
|
|
262
|
+
# Emit the list of includes the caller can splice into the docs TOC file.
|
|
263
|
+
manifest = os.path.join(args.out_dir, f"{args.prefix}-includes.txt")
|
|
264
|
+
with open(manifest, "w") as f:
|
|
265
|
+
for fname in written:
|
|
266
|
+
f.write(f"include::{args.prefix}/{fname}[leveloffset=+1]\n")
|
|
267
|
+
|
|
268
|
+
print(f"Rendered {len(written)} .adoc files to {args.out_dir}", file=sys.stderr)
|
|
269
|
+
for fname in written:
|
|
270
|
+
print(f" - {fname}", file=sys.stderr)
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
if __name__ == "__main__":
|
|
274
|
+
main()
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Run E2E tests against your dev account using local credentials.
|
|
3
|
+
#
|
|
4
|
+
# Usage:
|
|
5
|
+
# ./scripts/run-e2e-dev.sh # runs strands-bedrock.test.ts
|
|
6
|
+
# ./scripts/run-e2e-dev.sh --all # runs the full e2e suite
|
|
7
|
+
# ./scripts/run-e2e-dev.sh e2e-tests/foo.test.ts # runs a specific test file
|
|
8
|
+
|
|
9
|
+
set -euo pipefail
|
|
10
|
+
|
|
11
|
+
REGION="${AWS_REGION:-us-east-1}"
|
|
12
|
+
|
|
13
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
14
|
+
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
15
|
+
|
|
16
|
+
# ── Parse arguments ────────────────────────────────────────────────────────────
|
|
17
|
+
RUN_ALL=false
|
|
18
|
+
TEST_FILES=()
|
|
19
|
+
for arg in "$@"; do
|
|
20
|
+
if [[ "$arg" == "--all" ]]; then
|
|
21
|
+
RUN_ALL=true
|
|
22
|
+
else
|
|
23
|
+
TEST_FILES+=("$arg")
|
|
24
|
+
fi
|
|
25
|
+
done
|
|
26
|
+
|
|
27
|
+
# ── Build & install CLI from source ────────────────────────────────────────────
|
|
28
|
+
cd "$REPO_ROOT"
|
|
29
|
+
npm run build
|
|
30
|
+
TARBALL=$(npm pack | tail -1)
|
|
31
|
+
npm install -g "$TARBALL"
|
|
32
|
+
echo "=== Installed: $(agentcore --version) ==="
|
|
33
|
+
|
|
34
|
+
# ── Set env vars for tests ─────────────────────────────────────────────────────
|
|
35
|
+
export AWS_REGION="$REGION"
|
|
36
|
+
export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
|
|
37
|
+
|
|
38
|
+
# ── Run tests ──────────────────────────────────────────────────────────────────
|
|
39
|
+
cd "$REPO_ROOT"
|
|
40
|
+
|
|
41
|
+
EXCLUDE_API_KEY_TESTS=(
|
|
42
|
+
--exclude 'e2e-tests/*-anthropic*'
|
|
43
|
+
--exclude 'e2e-tests/*-openai*'
|
|
44
|
+
--exclude 'e2e-tests/*-gemini*'
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
if [[ "$RUN_ALL" == "true" ]]; then
|
|
48
|
+
echo "=== Running full e2e suite ==="
|
|
49
|
+
npx vitest run --project e2e
|
|
50
|
+
elif [[ ${#TEST_FILES[@]} -gt 0 ]]; then
|
|
51
|
+
echo "=== Running: ${TEST_FILES[*]} ==="
|
|
52
|
+
npx vitest run --project e2e "${TEST_FILES[@]}"
|
|
53
|
+
else
|
|
54
|
+
echo "=== Running all Bedrock/IAM tests (excluding API-key-dependent tests) ==="
|
|
55
|
+
npx vitest run --project e2e "${EXCLUDE_API_KEY_TESTS[@]}"
|
|
56
|
+
fi
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Run E2E tests locally in the CI account, replicating the GitHub Actions e2e-tests.yml workflow.
|
|
3
|
+
#
|
|
4
|
+
# Required env vars:
|
|
5
|
+
# E2E_ROLE_ARN — IAM role ARN to assume (grants access to the test account)
|
|
6
|
+
# E2E_SECRET_ARN — Secrets Manager ARN containing ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY,
|
|
7
|
+
# and (for payments tests) CDP_API_KEY_ID, CDP_API_KEY_SECRET, CDP_WALLET_SECRET
|
|
8
|
+
#
|
|
9
|
+
# Optional env vars:
|
|
10
|
+
# AWS_REGION — defaults to us-east-1
|
|
11
|
+
# CDK_REPO_PATH — local path to CDK constructs repo; if set, builds and uses it as CDK_TARBALL
|
|
12
|
+
#
|
|
13
|
+
# Usage:
|
|
14
|
+
# export E2E_ROLE_ARN=arn:aws:iam::<account>:role/<role>
|
|
15
|
+
# export E2E_SECRET_ARN=arn:aws:secretsmanager:<region>:<account>:secret:<name>
|
|
16
|
+
# ./scripts/run-e2e-local.sh # runs strands-bedrock.test.ts (CI default)
|
|
17
|
+
# ./scripts/run-e2e-local.sh --all # runs the full e2e suite
|
|
18
|
+
# ./scripts/run-e2e-local.sh e2e-tests/foo.test.ts # runs a specific test file
|
|
19
|
+
#
|
|
20
|
+
# Prerequisites: aws CLI, node >=20.19, npm, git, uv, jq
|
|
21
|
+
|
|
22
|
+
set -euo pipefail
|
|
23
|
+
|
|
24
|
+
ROLE_ARN="${E2E_ROLE_ARN:-}"
|
|
25
|
+
SECRET_ARN="${E2E_SECRET_ARN:-}"
|
|
26
|
+
AWS_REGION="${AWS_REGION:-us-east-1}"
|
|
27
|
+
|
|
28
|
+
if [[ -z "$ROLE_ARN" ]]; then
|
|
29
|
+
echo "❌ E2E_ROLE_ARN is not set. Export it before running this script:"
|
|
30
|
+
echo " export E2E_ROLE_ARN=arn:aws:iam::<account>:role/<role-name>"
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
if [[ -z "$SECRET_ARN" ]]; then
|
|
35
|
+
echo "❌ E2E_SECRET_ARN is not set. Export it before running this script:"
|
|
36
|
+
echo " export E2E_SECRET_ARN=arn:aws:secretsmanager:<region>:<account>:secret:<name>"
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
40
|
+
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
41
|
+
|
|
42
|
+
# ── Parse arguments ────────────────────────────────────────────────────────────
|
|
43
|
+
RUN_ALL=false
|
|
44
|
+
TEST_FILES=()
|
|
45
|
+
for arg in "$@"; do
|
|
46
|
+
if [[ "$arg" == "--all" ]]; then
|
|
47
|
+
RUN_ALL=true
|
|
48
|
+
else
|
|
49
|
+
TEST_FILES+=("$arg")
|
|
50
|
+
fi
|
|
51
|
+
done
|
|
52
|
+
|
|
53
|
+
echo "=== Assuming IAM role ==="
|
|
54
|
+
CREDS=$(aws sts assume-role \
|
|
55
|
+
--role-arn "$ROLE_ARN" \
|
|
56
|
+
--role-session-name "local-e2e-$(date +%s)" \
|
|
57
|
+
--duration-seconds 3600 \
|
|
58
|
+
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' \
|
|
59
|
+
--output text)
|
|
60
|
+
|
|
61
|
+
export AWS_ACCESS_KEY_ID=$(echo "$CREDS" | awk '{print $1}')
|
|
62
|
+
export AWS_SECRET_ACCESS_KEY=$(echo "$CREDS" | awk '{print $2}')
|
|
63
|
+
export AWS_SESSION_TOKEN=$(echo "$CREDS" | awk '{print $3}')
|
|
64
|
+
export AWS_REGION
|
|
65
|
+
|
|
66
|
+
echo "✅ Assumed role successfully"
|
|
67
|
+
|
|
68
|
+
echo "=== Fetching API keys from Secrets Manager ==="
|
|
69
|
+
SECRET_JSON=$(aws secretsmanager get-secret-value \
|
|
70
|
+
--secret-id "$SECRET_ARN" \
|
|
71
|
+
--region "$AWS_REGION" \
|
|
72
|
+
--query SecretString \
|
|
73
|
+
--output text)
|
|
74
|
+
|
|
75
|
+
# Mirror the GitHub workflow: parse-json-secrets maps keys to E2E_<KEY> then
|
|
76
|
+
# the workflow maps them to the bare names the tests expect.
|
|
77
|
+
export ANTHROPIC_API_KEY=$(echo "$SECRET_JSON" | jq -r '.ANTHROPIC_API_KEY // empty')
|
|
78
|
+
export OPENAI_API_KEY=$(echo "$SECRET_JSON" | jq -r '.OPENAI_API_KEY // empty')
|
|
79
|
+
export GEMINI_API_KEY=$(echo "$SECRET_JSON" | jq -r '.GEMINI_API_KEY // empty')
|
|
80
|
+
|
|
81
|
+
# Filesystem (BYO EFS / S3 Files) test inputs — required by strands-bedrock-byo-filesystem.test.ts.
|
|
82
|
+
export E2E_EFS_ACCESS_POINT_ARN=$(echo "$SECRET_JSON" | jq -r '.EFS_ACCESS_POINT_ARN // empty')
|
|
83
|
+
export E2E_S3_ACCESS_POINT_ARN=$(echo "$SECRET_JSON" | jq -r '.S3_ACCESS_POINT_ARN // empty')
|
|
84
|
+
export E2E_FILESYSTEM_SUBNET_ID=$(echo "$SECRET_JSON" | jq -r '.FILESYSTEM_SUBNET_ID // empty')
|
|
85
|
+
export E2E_FILESYSTEM_SECURITY_GROUP_ID=$(echo "$SECRET_JSON" | jq -r '.FILESYSTEM_SECURITY_GROUP_ID // empty')
|
|
86
|
+
|
|
87
|
+
# Payments (CDP) test inputs — required by payment-strands-bedrock.test.ts.
|
|
88
|
+
export CDP_API_KEY_ID=$(echo "$SECRET_JSON" | jq -r '.CDP_API_KEY_ID // empty')
|
|
89
|
+
export CDP_API_KEY_SECRET=$(echo "$SECRET_JSON" | jq -r '.CDP_API_KEY_SECRET // empty')
|
|
90
|
+
export CDP_WALLET_SECRET=$(echo "$SECRET_JSON" | jq -r '.CDP_WALLET_SECRET // empty')
|
|
91
|
+
|
|
92
|
+
echo "✅ Secrets loaded (keys present: $(echo "$SECRET_JSON" | jq -r 'keys | join(", ")')"
|
|
93
|
+
|
|
94
|
+
echo "=== Setting AWS account env var ==="
|
|
95
|
+
export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
|
|
96
|
+
echo "✅ AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID AWS_REGION=$AWS_REGION"
|
|
97
|
+
|
|
98
|
+
cd "$REPO_ROOT"
|
|
99
|
+
|
|
100
|
+
echo "=== Verifying git is configured (required for agentcore create) ==="
|
|
101
|
+
git_email="$(git config --global user.email || true)"
|
|
102
|
+
git_name="$(git config --global user.name || true)"
|
|
103
|
+
|
|
104
|
+
if [ -z "$git_email" ] || [ -z "$git_name" ]; then
|
|
105
|
+
echo "ERROR: git is not configured. 'agentcore create' requires a global git identity." >&2
|
|
106
|
+
echo "Set it with:" >&2
|
|
107
|
+
echo " git config --global user.email \"you@example.com\"" >&2
|
|
108
|
+
echo " git config --global user.name \"Your Name\"" >&2
|
|
109
|
+
exit 1
|
|
110
|
+
fi
|
|
111
|
+
|
|
112
|
+
echo "git configured as: $git_name <$git_email>"
|
|
113
|
+
|
|
114
|
+
echo "=== Installing dependencies ==="
|
|
115
|
+
npm ci
|
|
116
|
+
|
|
117
|
+
echo "=== Building CLI ==="
|
|
118
|
+
npm run build
|
|
119
|
+
|
|
120
|
+
echo "=== Installing CLI globally ==="
|
|
121
|
+
TARBALL=$(npm pack | tail -1)
|
|
122
|
+
npm install -g "$TARBALL"
|
|
123
|
+
echo "✅ Installed: $(agentcore --version)"
|
|
124
|
+
|
|
125
|
+
echo "=== Running E2E tests ==="
|
|
126
|
+
if [[ -n "${CDK_REPO_PATH:-}" ]]; then
|
|
127
|
+
echo "=== Building CDK constructs from $CDK_REPO_PATH ==="
|
|
128
|
+
pushd "$CDK_REPO_PATH" > /dev/null
|
|
129
|
+
npm ci
|
|
130
|
+
npm run build
|
|
131
|
+
CDK_TARBALL_NAME=$(npm pack | tail -1)
|
|
132
|
+
export CDK_TARBALL="$CDK_REPO_PATH/$CDK_TARBALL_NAME"
|
|
133
|
+
popd > /dev/null
|
|
134
|
+
echo "✅ CDK_TARBALL=$CDK_TARBALL"
|
|
135
|
+
fi
|
|
136
|
+
if [[ "$RUN_ALL" == "true" ]]; then
|
|
137
|
+
echo "Running full e2e suite"
|
|
138
|
+
npx vitest run --project e2e
|
|
139
|
+
elif [[ ${#TEST_FILES[@]} -gt 0 ]]; then
|
|
140
|
+
echo "Running: ${TEST_FILES[*]}"
|
|
141
|
+
npx vitest run --project e2e "${TEST_FILES[@]}"
|
|
142
|
+
else
|
|
143
|
+
echo "Running default: e2e-tests/strands-bedrock.test.ts"
|
|
144
|
+
npx vitest run --project e2e e2e-tests/strands-bedrock.test.ts
|
|
145
|
+
fi
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { ZodError } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* Base class for all config-related errors
|
|
4
|
-
*/
|
|
5
|
-
export declare abstract class ConfigError extends Error {
|
|
6
|
-
protected constructor(message: string);
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Thrown when a config file doesn't exist
|
|
10
|
-
*/
|
|
11
|
-
export declare class ConfigNotFoundError extends ConfigError {
|
|
12
|
-
readonly filePath: string;
|
|
13
|
-
readonly fileType: string;
|
|
14
|
-
constructor(filePath: string, fileType: string);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Thrown when a config file can't be read
|
|
18
|
-
*/
|
|
19
|
-
export declare class ConfigReadError extends ConfigError {
|
|
20
|
-
readonly filePath: string;
|
|
21
|
-
readonly cause: unknown;
|
|
22
|
-
constructor(filePath: string, cause: unknown);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Thrown when a config file can't be written
|
|
26
|
-
*/
|
|
27
|
-
export declare class ConfigWriteError extends ConfigError {
|
|
28
|
-
readonly filePath: string;
|
|
29
|
-
readonly cause: unknown;
|
|
30
|
-
constructor(filePath: string, cause: unknown);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Thrown when config validation fails
|
|
34
|
-
*/
|
|
35
|
-
export declare class ConfigValidationError extends ConfigError {
|
|
36
|
-
readonly filePath: string;
|
|
37
|
-
readonly fileType: string;
|
|
38
|
-
readonly zodError: ZodError;
|
|
39
|
-
constructor(filePath: string, fileType: string, zodError: ZodError);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Thrown when JSON parsing fails
|
|
43
|
-
*/
|
|
44
|
-
export declare class ConfigParseError extends ConfigError {
|
|
45
|
-
readonly filePath: string;
|
|
46
|
-
readonly cause: unknown;
|
|
47
|
-
constructor(filePath: string, cause: unknown);
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B;;GAEG;AACH,8BAAsB,WAAY,SAAQ,KAAK;IAC7C,SAAS,aAAa,OAAO,EAAE,MAAM;CAKtC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;aAEhC,QAAQ,EAAE,MAAM;aAChB,QAAQ,EAAE,MAAM;gBADhB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;CAInC;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;aAE5B,QAAQ,EAAE,MAAM;aACP,KAAK,EAAE,OAAO;gBADvB,QAAQ,EAAE,MAAM,EACP,KAAK,EAAE,OAAO;CAK1C;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;aAE7B,QAAQ,EAAE,MAAM;aACP,KAAK,EAAE,OAAO;gBADvB,QAAQ,EAAE,MAAM,EACP,KAAK,EAAE,OAAO;CAK1C;AA8GD;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,WAAW;aAElC,QAAQ,EAAE,MAAM;aAChB,QAAQ,EAAE,MAAM;aAChB,QAAQ,EAAE,QAAQ;gBAFlB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ;CAKrC;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;aAE7B,QAAQ,EAAE,MAAM;aACP,KAAK,EAAE,OAAO;gBADvB,QAAQ,EAAE,MAAM,EACP,KAAK,EAAE,OAAO;CAK1C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/errors/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare class PackagingError extends Error {
|
|
2
|
-
constructor(message: string);
|
|
3
|
-
}
|
|
4
|
-
export declare class MissingDependencyError extends PackagingError {
|
|
5
|
-
constructor(binary: string, installHint?: string);
|
|
6
|
-
}
|
|
7
|
-
export declare class MissingProjectFileError extends PackagingError {
|
|
8
|
-
constructor(filePath: string);
|
|
9
|
-
}
|
|
10
|
-
export declare class UnsupportedLanguageError extends PackagingError {
|
|
11
|
-
constructor(language: string);
|
|
12
|
-
}
|
|
13
|
-
export declare class ArtifactSizeError extends PackagingError {
|
|
14
|
-
constructor(limitBytes: number, actualBytes: number);
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/packaging/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAK5B;AAED,qBAAa,sBAAuB,SAAQ,cAAc;gBAC5C,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;CAGjD;AAED,qBAAa,uBAAwB,SAAQ,cAAc;gBAC7C,QAAQ,EAAE,MAAM;CAG7B;AAED,qBAAa,wBAAyB,SAAQ,cAAc;gBAC9C,QAAQ,EAAE,MAAM;CAG7B;AAED,qBAAa,iBAAkB,SAAQ,cAAc;gBACvC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAGpD"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ArtifactSizeError = exports.UnsupportedLanguageError = exports.MissingProjectFileError = exports.MissingDependencyError = exports.PackagingError = void 0;
|
|
4
|
-
class PackagingError extends Error {
|
|
5
|
-
constructor(message) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.name = this.constructor.name;
|
|
8
|
-
Error.captureStackTrace(this, this.constructor);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.PackagingError = PackagingError;
|
|
12
|
-
class MissingDependencyError extends PackagingError {
|
|
13
|
-
constructor(binary, installHint) {
|
|
14
|
-
super(installHint ? `${binary} is required. ${installHint}` : `${binary} is required.`);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.MissingDependencyError = MissingDependencyError;
|
|
18
|
-
class MissingProjectFileError extends PackagingError {
|
|
19
|
-
constructor(filePath) {
|
|
20
|
-
super(`Required project file not found: ${filePath}`);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
exports.MissingProjectFileError = MissingProjectFileError;
|
|
24
|
-
class UnsupportedLanguageError extends PackagingError {
|
|
25
|
-
constructor(language) {
|
|
26
|
-
super(`${language} packaging is not supported yet.`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.UnsupportedLanguageError = UnsupportedLanguageError;
|
|
30
|
-
class ArtifactSizeError extends PackagingError {
|
|
31
|
-
constructor(limitBytes, actualBytes) {
|
|
32
|
-
super(`Packaged artifact exceeds ${limitBytes} bytes (actual: ${actualBytes}).`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.ArtifactSizeError = ArtifactSizeError;
|
|
36
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/lib/packaging/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF;AAND,wCAMC;AAED,MAAa,sBAAuB,SAAQ,cAAc;IACxD,YAAY,MAAc,EAAE,WAAoB;QAC9C,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,iBAAiB,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,eAAe,CAAC,CAAC;IAC1F,CAAC;CACF;AAJD,wDAIC;AAED,MAAa,uBAAwB,SAAQ,cAAc;IACzD,YAAY,QAAgB;QAC1B,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAJD,0DAIC;AAED,MAAa,wBAAyB,SAAQ,cAAc;IAC1D,YAAY,QAAgB;QAC1B,KAAK,CAAC,GAAG,QAAQ,kCAAkC,CAAC,CAAC;IACvD,CAAC;CACF;AAJD,4DAIC;AAED,MAAa,iBAAkB,SAAQ,cAAc;IACnD,YAAY,UAAkB,EAAE,WAAmB;QACjD,KAAK,CAAC,6BAA6B,UAAU,mBAAmB,WAAW,IAAI,CAAC,CAAC;IACnF,CAAC;CACF;AAJD,8CAIC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface CliConfig {
|
|
2
|
-
uvDefaultIndex?: string;
|
|
3
|
-
uvIndex?: string;
|
|
4
|
-
disableTransactionSearch?: boolean;
|
|
5
|
-
transactionSearchIndexPercentage?: number;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Read the global CLI config from ~/.agentcore/config.json.
|
|
9
|
-
* Returns an empty object if the file doesn't exist or is malformed.
|
|
10
|
-
*/
|
|
11
|
-
export declare function readCliConfig(): CliConfig;
|
|
12
|
-
//# sourceMappingURL=cli-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-config.d.ts","sourceRoot":"","sources":["../../../../src/lib/schemas/io/cli-config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,gCAAgC,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,SAAS,CAkBzC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.readCliConfig = readCliConfig;
|
|
4
|
-
const fs_1 = require("fs");
|
|
5
|
-
const os_1 = require("os");
|
|
6
|
-
const path_1 = require("path");
|
|
7
|
-
const CONFIG_FILE = (0, path_1.join)((0, os_1.homedir)(), '.agentcore', 'config.json');
|
|
8
|
-
/**
|
|
9
|
-
* Read the global CLI config from ~/.agentcore/config.json.
|
|
10
|
-
* Returns an empty object if the file doesn't exist or is malformed.
|
|
11
|
-
*/
|
|
12
|
-
function readCliConfig() {
|
|
13
|
-
try {
|
|
14
|
-
const data = (0, fs_1.readFileSync)(CONFIG_FILE, 'utf-8');
|
|
15
|
-
const parsed = JSON.parse(data);
|
|
16
|
-
const config = {};
|
|
17
|
-
if (typeof parsed.uvDefaultIndex === 'string')
|
|
18
|
-
config.uvDefaultIndex = parsed.uvDefaultIndex;
|
|
19
|
-
if (typeof parsed.uvIndex === 'string')
|
|
20
|
-
config.uvIndex = parsed.uvIndex;
|
|
21
|
-
if (parsed.disableTransactionSearch === true)
|
|
22
|
-
config.disableTransactionSearch = true;
|
|
23
|
-
if (typeof parsed.transactionSearchIndexPercentage === 'number') {
|
|
24
|
-
const pct = parsed.transactionSearchIndexPercentage;
|
|
25
|
-
if (pct >= 0 && pct <= 100) {
|
|
26
|
-
config.transactionSearchIndexPercentage = pct;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return config;
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
return {};
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=cli-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-config.js","sourceRoot":"","sources":["../../../../src/lib/schemas/io/cli-config.ts"],"names":[],"mappings":";;AAiBA,sCAkBC;AAnCD,2BAAkC;AAClC,2BAA6B;AAC7B,+BAA4B;AAE5B,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AASjE;;;GAGG;AACH,SAAgB,aAAa;IAC3B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAA,iBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GAA4B,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QACpF,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ;YAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7F,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACxE,IAAI,MAAM,CAAC,wBAAwB,KAAK,IAAI;YAAE,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACrF,IAAI,OAAO,MAAM,CAAC,gCAAgC,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,MAAM,CAAC,gCAAgC,CAAC;YACpD,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC3B,MAAM,CAAC,gCAAgC,GAAG,GAAG,CAAC;YAChD,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|