@nestbox-ai/cli 1.0.42 → 1.0.47
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/.github/workflows/generate-client.yml +6 -33
- package/dist/commands/generate/project.js +9 -3
- package/dist/commands/generate/project.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/generate/project.ts +12 -3
- package/templates/base-py/main.py.hbs +42 -0
- package/templates/base-py/nestbox-agents.yaml.hbs +12 -0
- package/templates/base-py/pyproject.toml +19 -0
- package/templates/chatbot-py/main.py.hbs +42 -0
- package/templates/chatbot-py/nestbox-agents.yaml.hbs +12 -0
- package/templates/chatbot-py/pyproject.toml +19 -0
|
@@ -6,6 +6,7 @@ on:
|
|
|
6
6
|
- main
|
|
7
7
|
|
|
8
8
|
permissions:
|
|
9
|
+
id-token: write
|
|
9
10
|
contents: write
|
|
10
11
|
|
|
11
12
|
jobs:
|
|
@@ -14,8 +15,6 @@ jobs:
|
|
|
14
15
|
|
|
15
16
|
steps:
|
|
16
17
|
- uses: actions/checkout@v4
|
|
17
|
-
with:
|
|
18
|
-
token: ${{ secrets.GITHUB_TOKEN }}
|
|
19
18
|
|
|
20
19
|
- name: Setup Node.js
|
|
21
20
|
uses: actions/setup-node@v4
|
|
@@ -23,48 +22,22 @@ jobs:
|
|
|
23
22
|
node-version: '20'
|
|
24
23
|
cache: 'npm'
|
|
25
24
|
|
|
26
|
-
- name:
|
|
27
|
-
|
|
28
|
-
with:
|
|
29
|
-
node-version: '20.x'
|
|
30
|
-
registry-url: 'https://registry.npmjs.org'
|
|
25
|
+
- name: Upgrade npm (required for OIDC)
|
|
26
|
+
run: npm install -g npm@latest
|
|
31
27
|
|
|
32
28
|
- name: Install dependencies
|
|
33
|
-
run:
|
|
34
|
-
npm install --prefer-offline --no-audit
|
|
35
|
-
|
|
36
|
-
- name: Install platform-specific dependencies
|
|
37
|
-
run: |
|
|
38
|
-
# Install Linux-specific Rollup binary for vitest
|
|
39
|
-
npm install @rollup/rollup-linux-x64-gnu --no-save || echo "Warning: Could not install platform-specific Rollup binary"
|
|
40
|
-
continue-on-error: true
|
|
41
|
-
|
|
42
|
-
- name: Verify installation
|
|
43
|
-
run: |
|
|
44
|
-
npm list vitest --depth=0
|
|
45
|
-
node --version
|
|
46
|
-
npm --version
|
|
29
|
+
run: npm install --prefer-offline --no-audit
|
|
47
30
|
|
|
48
31
|
- name: Run tests
|
|
49
|
-
run:
|
|
50
|
-
echo "Running tests..."
|
|
51
|
-
echo "Node.js version: $(node --version)"
|
|
52
|
-
echo "NPM version: $(npm --version)"
|
|
53
|
-
echo "Checking if vitest is available..."
|
|
54
|
-
npx vitest --version || echo "Vitest not found via npx"
|
|
55
|
-
npm run test:ci
|
|
56
|
-
echo "All tests passed! ✅"
|
|
32
|
+
run: npm run test:ci
|
|
57
33
|
|
|
58
34
|
- name: Update package version
|
|
59
35
|
run: |
|
|
60
36
|
new_version="1.0.${{ github.run_number }}"
|
|
61
37
|
jq ".version = \"$new_version\"" package.json > temp.json && mv temp.json package.json
|
|
62
|
-
echo "Updated version to $new_version"
|
|
63
38
|
|
|
64
39
|
- name: Build project
|
|
65
40
|
run: npm run build
|
|
66
41
|
|
|
67
42
|
- name: Publish to npm
|
|
68
|
-
run: npm publish --access public --
|
|
69
|
-
env:
|
|
70
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
43
|
+
run: npm publish --access public --provenance
|
|
@@ -51,6 +51,7 @@ function registerProjectCommand(generateCommand) {
|
|
|
51
51
|
choices: [
|
|
52
52
|
{ name: "TypeScript", value: "ts" },
|
|
53
53
|
{ name: "JavaScript", value: "js" },
|
|
54
|
+
{ name: "Python", value: "py" },
|
|
54
55
|
],
|
|
55
56
|
when: () => !selectedLang,
|
|
56
57
|
},
|
|
@@ -134,9 +135,14 @@ function registerProjectCommand(generateCommand) {
|
|
|
134
135
|
spinner.succeed(`Successfully generated ${mappedTemplateType} project in ${folder}`);
|
|
135
136
|
console.log(chalk_1.default.green("\nNext steps:"));
|
|
136
137
|
console.log(chalk_1.default.yellow(` cd ${folder}`));
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
if (selectedLang === "py") {
|
|
139
|
+
console.log(chalk_1.default.yellow(" pip install -r requirements.txt"));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.log(chalk_1.default.yellow(" npm install"));
|
|
143
|
+
if (selectedLang === "ts") {
|
|
144
|
+
console.log(chalk_1.default.yellow(" npm run build"));
|
|
145
|
+
}
|
|
140
146
|
}
|
|
141
147
|
console.log(chalk_1.default.yellow(` nestbox agent deploy --agent ${agentNameInYaml} --instance <instance-name>`));
|
|
142
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/generate/project.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAaA,
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/generate/project.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -50,6 +50,7 @@ export function registerProjectCommand(generateCommand: Command): void {
|
|
|
50
50
|
choices: [
|
|
51
51
|
{ name: "TypeScript", value: "ts" },
|
|
52
52
|
{ name: "JavaScript", value: "js" },
|
|
53
|
+
{ name: "Python", value: "py" },
|
|
53
54
|
],
|
|
54
55
|
when: () => !selectedLang,
|
|
55
56
|
},
|
|
@@ -164,9 +165,17 @@ export function registerProjectCommand(generateCommand: Command): void {
|
|
|
164
165
|
|
|
165
166
|
console.log(chalk.green("\nNext steps:"));
|
|
166
167
|
console.log(chalk.yellow(` cd ${folder}`));
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
if (selectedLang === "py") {
|
|
169
|
+
console.log(
|
|
170
|
+
chalk.yellow(
|
|
171
|
+
" pip install -r requirements.txt"
|
|
172
|
+
)
|
|
173
|
+
);
|
|
174
|
+
} else {
|
|
175
|
+
console.log(chalk.yellow(" npm install"));
|
|
176
|
+
if (selectedLang === "ts") {
|
|
177
|
+
console.log(chalk.yellow(" npm run build"));
|
|
178
|
+
}
|
|
170
179
|
}
|
|
171
180
|
console.log(
|
|
172
181
|
chalk.yellow(
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from nestbox_ai_functions import use_agent
|
|
2
|
+
from openai import OpenAI
|
|
3
|
+
|
|
4
|
+
MODEL_NAME = "openai/gpt-oss-20b"
|
|
5
|
+
|
|
6
|
+
client = OpenAI(
|
|
7
|
+
base_url="http://localhost:8000/v1",
|
|
8
|
+
api_key="sk-xxxxxx"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
@use_agent
|
|
12
|
+
async def {{agentName}}(context, events):
|
|
13
|
+
try:
|
|
14
|
+
response = client.chat.completions.create(
|
|
15
|
+
model=MODEL_NAME,
|
|
16
|
+
messages=[
|
|
17
|
+
{
|
|
18
|
+
"role": "user",
|
|
19
|
+
"content": "Why is the sky blue?"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
result = response.choices[0].message.content if response.choices else None
|
|
25
|
+
|
|
26
|
+
if not result:
|
|
27
|
+
await events.emitQueryFailed({
|
|
28
|
+
"data": {
|
|
29
|
+
"error": "No response from model"
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
else:
|
|
33
|
+
await events.emitQueryCompleted({
|
|
34
|
+
"data": result
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
except Exception as e:
|
|
38
|
+
await events.emitQueryFailed({
|
|
39
|
+
"data": {
|
|
40
|
+
"error": str(e)
|
|
41
|
+
}
|
|
42
|
+
})
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
agents:
|
|
2
|
+
- name: {{ agentNameInYaml }}
|
|
3
|
+
description: Our new agent {{ agentNameInYaml }} that uses the nestbox API
|
|
4
|
+
entry: {{agentName}}
|
|
5
|
+
inputSchema:
|
|
6
|
+
type: object
|
|
7
|
+
properties:
|
|
8
|
+
content:
|
|
9
|
+
type: string
|
|
10
|
+
description: The content of the input as string
|
|
11
|
+
minLength: 10
|
|
12
|
+
maxLength: 5000
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "app"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Nestbox AI Python Agent"
|
|
9
|
+
requires-python = ">=3.9"
|
|
10
|
+
|
|
11
|
+
dependencies = [
|
|
12
|
+
"nestbox-ai-functions>=2.0.3",
|
|
13
|
+
"openai>=1.40.0",
|
|
14
|
+
"httpx>=0.27.0",
|
|
15
|
+
"anyio>=4.0.0"
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
[tool.setuptools]
|
|
19
|
+
packages = ["."]
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from nestbox_ai_functions import use_chatbot
|
|
2
|
+
from openai import OpenAI
|
|
3
|
+
|
|
4
|
+
MODEL_NAME = "openai/gpt-oss-20b"
|
|
5
|
+
|
|
6
|
+
client = OpenAI(
|
|
7
|
+
base_url="http://localhost:8000/v1",
|
|
8
|
+
api_key="sk-xxxxxx"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
@use_chatbot
|
|
12
|
+
async def {{agentName}}(context, events):
|
|
13
|
+
try:
|
|
14
|
+
response = client.chat.completions.create(
|
|
15
|
+
model=MODEL_NAME,
|
|
16
|
+
messages=context.messages,
|
|
17
|
+
stream=False,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
result = (
|
|
21
|
+
response.choices[0].message.content
|
|
22
|
+
if response.choices
|
|
23
|
+
else None
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
if not result:
|
|
27
|
+
await events.emitQueryFailed({
|
|
28
|
+
"data": {
|
|
29
|
+
"error": "No response from model"
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
else:
|
|
33
|
+
await events.emitQueryCompleted({
|
|
34
|
+
"data": result
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
except Exception as e:
|
|
38
|
+
await events.emitQueryFailed({
|
|
39
|
+
"data": {
|
|
40
|
+
"error": str(e)
|
|
41
|
+
}
|
|
42
|
+
})
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
agents:
|
|
2
|
+
- name: {{ agentNameInYaml }}
|
|
3
|
+
description: Our new agent {{ agentNameInYaml }} that uses the nestbox API
|
|
4
|
+
entry: {{agentName}}
|
|
5
|
+
inputSchema:
|
|
6
|
+
type: object
|
|
7
|
+
properties:
|
|
8
|
+
content:
|
|
9
|
+
type: string
|
|
10
|
+
description: The content of the input as string
|
|
11
|
+
minLength: 10
|
|
12
|
+
maxLength: 5000
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "app"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Nestbox AI Python Agent"
|
|
9
|
+
requires-python = ">=3.9"
|
|
10
|
+
|
|
11
|
+
dependencies = [
|
|
12
|
+
"nestbox-ai-functions>=2.0.3",
|
|
13
|
+
"openai>=1.40.0",
|
|
14
|
+
"httpx>=0.27.0",
|
|
15
|
+
"anyio>=4.0.0"
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
[tool.setuptools]
|
|
19
|
+
packages = ["."]
|