@sprucelabs/spruce-cli 23.0.0 → 24.0.0
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/CHANGELOG.md +21 -0
- package/LICENSE +21 -0
- package/build/__tests__/behavioral/DeployingToSandbox.test.d.ts +6 -1
- package/build/__tests__/behavioral/DeployingToSandbox.test.js +54 -35
- package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +6 -0
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/CreatingSchemasWithGenerics.test.js +1 -1
- package/build/__tests__/behavioral/schemas/CreatingSchemasWithGenerics.test.js.map +1 -1
- package/build/__tests__/implementation/TerminalInterface.test.d.ts +1 -0
- package/build/__tests__/implementation/TerminalInterface.test.js +6 -0
- package/build/__tests__/implementation/TerminalInterface.test.js.map +1 -1
- package/build/errors/SpruceError.js +1 -1
- package/build/errors/SpruceError.js.map +1 -1
- package/build/features/skill/actions/LoginAction.js +1 -2
- package/build/features/skill/actions/LoginAction.js.map +1 -1
- package/build/index.js +0 -0
- package/build/utilities/isCi.js +1 -1
- package/build/utilities/isCi.js.map +1 -1
- package/package.json +32 -49
- package/src/__tests__/behavioral/DeployingToSandbox.test.ts +77 -44
- package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +13 -1
- package/src/__tests__/behavioral/schemas/CreatingSchemasWithGenerics.test.ts +2 -1
- package/src/__tests__/implementation/TerminalInterface.test.ts +9 -0
- package/src/errors/SpruceError.ts +1 -1
- package/src/features/skill/actions/LoginAction.ts +8 -7
- package/src/utilities/isCi.ts +1 -1
- package/.DS_Store +0 -0
- package/.env +0 -25
- package/.env-dev +0 -24
- package/.eslintcache +0 -1
- package/dist/spruce-darwin-arm64 +0 -0
- package/dist/spruce-linux-arm64 +0 -0
- package/junit.xml +0 -17
- package/yarn-error.log +0 -597
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
+
"version": "24.0.0",
|
|
7
8
|
"skill": {
|
|
8
9
|
"namespace": "spruce-cli",
|
|
9
10
|
"upgradeIgnoreList": [
|
|
@@ -17,7 +18,6 @@
|
|
|
17
18
|
]
|
|
18
19
|
},
|
|
19
20
|
"license": "MIT",
|
|
20
|
-
"version": "23.0.0",
|
|
21
21
|
"bin": {
|
|
22
22
|
"spruce": "./build/index.js"
|
|
23
23
|
},
|
|
@@ -73,18 +73,18 @@
|
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"@jest/reporters": "^29.7.0",
|
|
76
|
-
"@sprucelabs/error": "^6.0.
|
|
76
|
+
"@sprucelabs/error": "^6.0.566",
|
|
77
77
|
"@sprucelabs/globby": "^2.0.501",
|
|
78
|
-
"@sprucelabs/heartwood-view-controllers": "^
|
|
79
|
-
"@sprucelabs/jest-json-reporter": "^8.0.
|
|
80
|
-
"@sprucelabs/mercury-client": "^42.0.
|
|
81
|
-
"@sprucelabs/mercury-event-emitter": "^42.0.
|
|
82
|
-
"@sprucelabs/mercury-types": "^47.0
|
|
83
|
-
"@sprucelabs/schema": "^31.0.
|
|
84
|
-
"@sprucelabs/spruce-core-schemas": "^40.1.
|
|
85
|
-
"@sprucelabs/spruce-event-utils": "^40.1.
|
|
86
|
-
"@sprucelabs/spruce-skill-utils": "^31.
|
|
87
|
-
"@sprucelabs/spruce-templates": "^
|
|
78
|
+
"@sprucelabs/heartwood-view-controllers": "^116.0.15",
|
|
79
|
+
"@sprucelabs/jest-json-reporter": "^8.0.567",
|
|
80
|
+
"@sprucelabs/mercury-client": "^42.0.689",
|
|
81
|
+
"@sprucelabs/mercury-event-emitter": "^42.0.689",
|
|
82
|
+
"@sprucelabs/mercury-types": "^47.2.0",
|
|
83
|
+
"@sprucelabs/schema": "^31.0.19",
|
|
84
|
+
"@sprucelabs/spruce-core-schemas": "^40.1.605",
|
|
85
|
+
"@sprucelabs/spruce-event-utils": "^40.1.394",
|
|
86
|
+
"@sprucelabs/spruce-skill-utils": "^31.2.16",
|
|
87
|
+
"@sprucelabs/spruce-templates": "^24.0.0",
|
|
88
88
|
"@typescript-eslint/eslint-plugin": "^7.7.1",
|
|
89
89
|
"@typescript-eslint/parser": "^7.7.1",
|
|
90
90
|
"cfonts": "^3.3.0",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"cli-table3": "^0.6.5",
|
|
94
94
|
"commander": "7.2.0",
|
|
95
95
|
"emphasize": "4.2.0",
|
|
96
|
-
"fs-extra": "^11.
|
|
96
|
+
"fs-extra": "^11.3.0",
|
|
97
97
|
"inquirer": "^8.2.4",
|
|
98
98
|
"inquirer-file-tree-selection-prompt": "1.0.18",
|
|
99
99
|
"js-tetris-cli": "^0.0.3",
|
|
@@ -106,42 +106,41 @@
|
|
|
106
106
|
"terminal-kit": "sprucelabsai/terminal-kit",
|
|
107
107
|
"tree-kill": "^1.2.2",
|
|
108
108
|
"tsutils": "^3.21.0",
|
|
109
|
-
"typescript": "^5.7.
|
|
110
|
-
"uuid": "^11.0.
|
|
109
|
+
"typescript": "^5.7.3",
|
|
110
|
+
"uuid": "^11.0.5"
|
|
111
111
|
},
|
|
112
112
|
"devDependencies": {
|
|
113
|
-
"@sprucelabs/data-stores": "^28.
|
|
114
|
-
"@sprucelabs/
|
|
115
|
-
"@sprucelabs/
|
|
116
|
-
"@sprucelabs/
|
|
117
|
-
"@sprucelabs/spruce-
|
|
118
|
-
"@sprucelabs/spruce-
|
|
119
|
-
"@sprucelabs/spruce-
|
|
120
|
-
"@sprucelabs/
|
|
121
|
-
"@sprucelabs/test": "^
|
|
122
|
-
"@sprucelabs/test-utils": "^5.1.529",
|
|
113
|
+
"@sprucelabs/data-stores": "^28.5.24",
|
|
114
|
+
"@sprucelabs/mercury-core-events": "^25.1.0",
|
|
115
|
+
"@sprucelabs/resolve-path-aliases": "^2.0.527",
|
|
116
|
+
"@sprucelabs/spruce-conversation-plugin": "^65.0.9",
|
|
117
|
+
"@sprucelabs/spruce-deploy-plugin": "^65.0.9",
|
|
118
|
+
"@sprucelabs/spruce-store-plugin": "^65.0.9",
|
|
119
|
+
"@sprucelabs/spruce-test-fixtures": "^65.0.9",
|
|
120
|
+
"@sprucelabs/test": "^9.0.67",
|
|
121
|
+
"@sprucelabs/test-utils": "^5.1.546",
|
|
123
122
|
"@types/blessed": "^0.1.25",
|
|
124
123
|
"@types/eslint": "^9.6.1",
|
|
125
124
|
"@types/fs-extra": "^11.0.4",
|
|
126
125
|
"@types/inquirer": "^9.0.7",
|
|
127
|
-
"@types/lodash": "^4.17.
|
|
126
|
+
"@types/lodash": "^4.17.14",
|
|
128
127
|
"@types/md5": "^2.3.5",
|
|
129
|
-
"@types/node": "^22.10.
|
|
128
|
+
"@types/node": "^22.10.7",
|
|
130
129
|
"@types/promise.allsettled": "^1.0.6",
|
|
131
130
|
"@types/ps-node": "^0.1.3",
|
|
132
131
|
"@types/semver": "^7.5.8",
|
|
133
132
|
"@types/sha1": "^1.1.5",
|
|
134
133
|
"@types/slug": "^5.0.9",
|
|
135
134
|
"@types/superagent": "^8.1.9",
|
|
136
|
-
"@types/terminal-kit": "^2.5.
|
|
135
|
+
"@types/terminal-kit": "^2.5.7",
|
|
137
136
|
"@types/uuid": "^10.0.0",
|
|
138
137
|
"chokidar-cli": "^3.0.0",
|
|
139
|
-
"concurrently": "^9.1.
|
|
138
|
+
"concurrently": "^9.1.2",
|
|
140
139
|
"conventional-changelog-sprucelabs": "2.0.1",
|
|
141
140
|
"dotenv": "^16.4.7",
|
|
142
|
-
"eslint": "^9.
|
|
141
|
+
"eslint": "^9.18.0",
|
|
143
142
|
"eslint-config-spruce": "^11.2.26",
|
|
144
|
-
"find-process": "^1.4.
|
|
143
|
+
"find-process": "^1.4.10",
|
|
145
144
|
"jest": "^29.7.0",
|
|
146
145
|
"jest-circus": "^29.7.0",
|
|
147
146
|
"jest-junit": "^16.0.0",
|
|
@@ -555,23 +554,7 @@
|
|
|
555
554
|
"moduleNameMapper": {
|
|
556
555
|
"^#spruce/schemas/fields/(.*)": "<rootDir>/node_modules/@sprucelabs/schema/build/.spruce/schemas/fields/$1",
|
|
557
556
|
"^#spruce/(.*)$": "<rootDir>/build/.spruce/$1"
|
|
558
|
-
}
|
|
559
|
-
"reporters": [
|
|
560
|
-
"default",
|
|
561
|
-
[
|
|
562
|
-
"@sprucelabs/jest-sheets-reporter",
|
|
563
|
-
{
|
|
564
|
-
"sheetId": "1DoWM7mYgGDa-PJXptLomrZmbIBZiuxS1YiAsRXU2Gm0",
|
|
565
|
-
"worksheetId": 889384139,
|
|
566
|
-
"testMap": {
|
|
567
|
-
"generatesExpectedPermissionContract": "P11",
|
|
568
|
-
"syncsNewPermissionsWhenMade": "P13",
|
|
569
|
-
"combinedFileImportsAllPermissions": "P14"
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
],
|
|
573
|
-
"jest-junit"
|
|
574
|
-
]
|
|
557
|
+
}
|
|
575
558
|
},
|
|
576
559
|
"jest-junit": {
|
|
577
560
|
"addFileAttribute": "true"
|
|
@@ -588,5 +571,5 @@
|
|
|
588
571
|
"open"
|
|
589
572
|
]
|
|
590
573
|
},
|
|
591
|
-
"gitHead": "
|
|
574
|
+
"gitHead": "4ae8247c0a6aeb36bc8d249c50303e01decb96c2"
|
|
592
575
|
}
|
|
@@ -5,6 +5,7 @@ import { errorAssert } from '@sprucelabs/test-utils'
|
|
|
5
5
|
import AbstractCliTest from '../../tests/AbstractCliTest'
|
|
6
6
|
import testUtil from '../../tests/utilities/test.utility'
|
|
7
7
|
import { ApiClient } from '../../types/apiClient.types'
|
|
8
|
+
import { RegisteredSkill } from '../../types/cli.types'
|
|
8
9
|
|
|
9
10
|
export default class DeployingToSandboxTest extends AbstractCliTest {
|
|
10
11
|
private static sandboxDemoNumber = process.env.SANDBOX_DEMO_NUMBER as string
|
|
@@ -56,7 +57,7 @@ export default class DeployingToSandboxTest extends AbstractCliTest {
|
|
|
56
57
|
name: 'My new skill',
|
|
57
58
|
})
|
|
58
59
|
|
|
59
|
-
await this.
|
|
60
|
+
await this.unregisterCurrentSkill()
|
|
60
61
|
|
|
61
62
|
const env = this.Service('env')
|
|
62
63
|
|
|
@@ -64,14 +65,12 @@ export default class DeployingToSandboxTest extends AbstractCliTest {
|
|
|
64
65
|
env.unset('SKILL_NAME')
|
|
65
66
|
env.unset('SKILL_SLUG')
|
|
66
67
|
|
|
67
|
-
const results = await this.
|
|
68
|
-
local: true,
|
|
69
|
-
})
|
|
68
|
+
const results = await this.boot()
|
|
70
69
|
|
|
71
70
|
assert.isTruthy(results.errors)
|
|
72
71
|
|
|
73
72
|
errorAssert.assertError(results.errors[0], 'MISSING_PARAMETERS', {
|
|
74
|
-
parameters: ['env.SKILL_NAME'
|
|
73
|
+
parameters: ['env.SKILL_NAME'],
|
|
75
74
|
})
|
|
76
75
|
}
|
|
77
76
|
|
|
@@ -81,12 +80,12 @@ export default class DeployingToSandboxTest extends AbstractCliTest {
|
|
|
81
80
|
|
|
82
81
|
const expected = await this.getTotalSkills(client)
|
|
83
82
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
await assert.doesThrowAsync(
|
|
84
|
+
() => this.bootAndKill(),
|
|
85
|
+
"don't have access"
|
|
86
|
+
)
|
|
87
87
|
|
|
88
88
|
const actual = await this.getTotalSkills(client)
|
|
89
|
-
|
|
90
89
|
assert.isEqual(expected, actual)
|
|
91
90
|
}
|
|
92
91
|
|
|
@@ -98,9 +97,7 @@ export default class DeployingToSandboxTest extends AbstractCliTest {
|
|
|
98
97
|
name: 'My new skill',
|
|
99
98
|
})
|
|
100
99
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
boot.meta?.kill()
|
|
100
|
+
await this.bootAndKill()
|
|
104
101
|
|
|
105
102
|
const skills = await this.fetchSkills(client)
|
|
106
103
|
|
|
@@ -113,20 +110,13 @@ export default class DeployingToSandboxTest extends AbstractCliTest {
|
|
|
113
110
|
protected static async registersSkillAgain() {
|
|
114
111
|
const { client } = await this.installAndSetupForSandbox()
|
|
115
112
|
|
|
116
|
-
const skill = await this.
|
|
117
|
-
name: 'My new skill',
|
|
118
|
-
})
|
|
113
|
+
const skill = await this.registerCurrentSkill('My new skill')
|
|
119
114
|
|
|
120
|
-
await this.
|
|
121
|
-
|
|
122
|
-
const env = this.Service('env')
|
|
123
|
-
env.set('SKILL_ID', skill.id)
|
|
124
|
-
env.set('SKILL_NAME', skill.name)
|
|
125
|
-
env.set('SKILL_SLUG', skill.slug)
|
|
115
|
+
await this.unregisterCurrentSkill()
|
|
126
116
|
|
|
127
|
-
|
|
117
|
+
this.updateEnv(skill)
|
|
128
118
|
|
|
129
|
-
|
|
119
|
+
await this.bootAndKill()
|
|
130
120
|
|
|
131
121
|
const skills = await this.fetchSkills(client)
|
|
132
122
|
|
|
@@ -139,44 +129,81 @@ export default class DeployingToSandboxTest extends AbstractCliTest {
|
|
|
139
129
|
@test()
|
|
140
130
|
protected static async registersSkillAndCanBootAgain() {
|
|
141
131
|
await this.installAndSetupForSandbox()
|
|
132
|
+
const skill = await this.registerCurrentSkill('My new skill')
|
|
133
|
+
await this.unregisterCurrentSkill()
|
|
142
134
|
|
|
143
|
-
|
|
144
|
-
name: 'My new skill',
|
|
145
|
-
})
|
|
135
|
+
this.updateEnv(skill)
|
|
146
136
|
|
|
147
|
-
await this.
|
|
148
|
-
|
|
149
|
-
const boot = await this.Action('skill', 'boot').execute({ local: true })
|
|
150
|
-
|
|
151
|
-
boot.meta?.kill()
|
|
152
|
-
|
|
153
|
-
const boot2 = await this.Action('skill', 'boot').execute({
|
|
154
|
-
local: true,
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
boot2.meta?.kill()
|
|
137
|
+
await this.bootAndKill()
|
|
138
|
+
await this.bootAndKill()
|
|
158
139
|
}
|
|
159
140
|
|
|
160
141
|
@test()
|
|
161
142
|
protected static async canReRegisterAndThenRegisterConversationsWithoutCrash() {
|
|
162
143
|
await this.installAndSetupForSandbox('conversation-with-sandbox')
|
|
163
144
|
|
|
164
|
-
await this.
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
await this.resetCurrentSkill()
|
|
145
|
+
const skill = await this.registerCurrentSkill('Conversation test')
|
|
146
|
+
await this.unregisterCurrentSkill()
|
|
147
|
+
this.updateEnv(skill)
|
|
169
148
|
|
|
170
149
|
await this.Action('conversation', 'create').execute({
|
|
171
150
|
nameReadable: 'book an appointment',
|
|
172
151
|
nameCamel: 'bookAnAppointment',
|
|
173
152
|
})
|
|
174
153
|
|
|
175
|
-
|
|
154
|
+
await this.bootAndKill()
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@test()
|
|
158
|
+
protected static async logsInSkillIfAlreadyRegisteredButMissingEnv() {
|
|
159
|
+
await this.installAndSetupForSandbox()
|
|
160
|
+
|
|
161
|
+
await this.registerCurrentSkill('Login if already registered')
|
|
162
|
+
|
|
163
|
+
const env = this.Service('env')
|
|
164
|
+
|
|
165
|
+
const originalSkillId = env.get('SKILL_ID')
|
|
166
|
+
const orginalSkillApiKey = env.get('SKILL_API_KEY')
|
|
167
|
+
|
|
168
|
+
env.set('SKILL_ID', 'this is garbage')
|
|
169
|
+
|
|
170
|
+
await this.bootAndKill()
|
|
171
|
+
|
|
172
|
+
delete process.env.SKILL_ID
|
|
173
|
+
delete process.env.SKILL_API_KEY
|
|
174
|
+
|
|
175
|
+
const skillId = env.get('SKILL_ID')
|
|
176
|
+
const apiKey = env.get('SKILL_API_KEY')
|
|
177
|
+
|
|
178
|
+
assert.isEqual(
|
|
179
|
+
skillId,
|
|
180
|
+
originalSkillId,
|
|
181
|
+
'It logged in as the wrong skill!'
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
assert.isEqual(
|
|
185
|
+
apiKey,
|
|
186
|
+
orginalSkillApiKey,
|
|
187
|
+
'It logged in with the wrong api key!'
|
|
188
|
+
)
|
|
189
|
+
}
|
|
176
190
|
|
|
191
|
+
private static updateEnv(skill: RegisteredSkill) {
|
|
192
|
+
const env = this.Service('env')
|
|
193
|
+
env.set('SKILL_ID', skill.id)
|
|
194
|
+
env.set('SKILL_NAME', skill.name)
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
private static async bootAndKill() {
|
|
198
|
+
const boot = await this.boot()
|
|
199
|
+
assert.isFalsy(boot.errors)
|
|
177
200
|
boot.meta?.kill()
|
|
178
201
|
}
|
|
179
202
|
|
|
203
|
+
private static async boot() {
|
|
204
|
+
return await this.Action('skill', 'boot').execute({ local: true })
|
|
205
|
+
}
|
|
206
|
+
|
|
180
207
|
private static async installAndSetupForSandbox(cacheKey = 'sandbox') {
|
|
181
208
|
const client = await this.getMercuryFixture().connectToApi()
|
|
182
209
|
|
|
@@ -202,7 +229,13 @@ export default class DeployingToSandboxTest extends AbstractCliTest {
|
|
|
202
229
|
return skills
|
|
203
230
|
}
|
|
204
231
|
|
|
205
|
-
private static async
|
|
232
|
+
private static async registerCurrentSkill(name: string) {
|
|
233
|
+
return await this.getSkillFixture().registerCurrentSkill({
|
|
234
|
+
name,
|
|
235
|
+
})
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
private static async unregisterCurrentSkill() {
|
|
206
239
|
const isInstalled =
|
|
207
240
|
this.Service('settings').isMarkedAsInstalled('skill')
|
|
208
241
|
if (!isInstalled) {
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
namesUtil,
|
|
15
15
|
versionUtil,
|
|
16
16
|
} from '@sprucelabs/spruce-skill-utils'
|
|
17
|
-
import { test, assert } from '@sprucelabs/test-utils'
|
|
17
|
+
import { test, assert, generateId } from '@sprucelabs/test-utils'
|
|
18
18
|
import { generateEventContractFileName } from '../../../features/event/writers/EventWriter'
|
|
19
19
|
import { FeatureActionResponse } from '../../../features/features.types'
|
|
20
20
|
import LintService from '../../../services/LintService'
|
|
@@ -94,9 +94,14 @@ export default class KeepingEventsInSyncTest extends AbstractEventTest {
|
|
|
94
94
|
const eventName = `my-new-event::${this.todaysVersion.constValue}`
|
|
95
95
|
const fqen = `${skill2.slug}.my-new-event::${this.todaysVersion.constValue}`
|
|
96
96
|
|
|
97
|
+
const description = generateId() + '"' + '"'
|
|
98
|
+
const aiInstructions = generateId() + '"' + '"'
|
|
99
|
+
|
|
97
100
|
await skillFixture.registerEventContract(skill2, {
|
|
98
101
|
eventSignatures: {
|
|
99
102
|
[eventName]: {
|
|
103
|
+
description,
|
|
104
|
+
aiInstructions,
|
|
100
105
|
emitPayloadSchema: buildEmitTargetAndPayloadSchema({
|
|
101
106
|
eventName: 'my-new-event',
|
|
102
107
|
targetSchema: eventTargetSchema,
|
|
@@ -193,6 +198,13 @@ export default class KeepingEventsInSyncTest extends AbstractEventTest {
|
|
|
193
198
|
sig.listenPermissionContract.permissions[0].id,
|
|
194
199
|
'can-listen'
|
|
195
200
|
)
|
|
201
|
+
|
|
202
|
+
assert.isEqual(sig.description, description, 'description missing')
|
|
203
|
+
assert.isEqual(
|
|
204
|
+
sig.aiInstructions,
|
|
205
|
+
aiInstructions,
|
|
206
|
+
'aiInstructions missing'
|
|
207
|
+
)
|
|
196
208
|
}
|
|
197
209
|
|
|
198
210
|
@test()
|
|
@@ -25,12 +25,13 @@ export default class CreatingSchemasWithGenericsTest extends AbstractSchemaTest
|
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
const contents = diskUtil.readFile(match)
|
|
28
|
+
|
|
28
29
|
assert.doesInclude(contents, '<Type extends string = string>')
|
|
29
30
|
assert.doesInclude(contents, '<Type2 extends string = string>')
|
|
30
31
|
assert.doesInclude(contents, '<Type>')
|
|
31
32
|
assert.doesInclude(
|
|
32
33
|
contents,
|
|
33
|
-
"typedByGeneric'?: (Type2)| undefined | null"
|
|
34
|
+
"'typedByGeneric'?: (Type2) | undefined | null"
|
|
34
35
|
)
|
|
35
36
|
|
|
36
37
|
await this.assertValidActionResponseFiles(results)
|
|
@@ -11,6 +11,9 @@ export default class TerminalInterfaceTest extends AbstractSpruceTest {
|
|
|
11
11
|
|
|
12
12
|
protected static async beforeEach() {
|
|
13
13
|
await super.beforeEach()
|
|
14
|
+
|
|
15
|
+
process.env.IS_TESTING_SELF = 'true'
|
|
16
|
+
|
|
14
17
|
this.wasOraHit = false
|
|
15
18
|
//@ts-ignore
|
|
16
19
|
TerminalInterface.ora = () => {
|
|
@@ -24,6 +27,11 @@ export default class TerminalInterfaceTest extends AbstractSpruceTest {
|
|
|
24
27
|
this.ui = new TerminalInterface(this.cwd)
|
|
25
28
|
}
|
|
26
29
|
|
|
30
|
+
protected static async afterEach(): Promise<void> {
|
|
31
|
+
await super.afterEach()
|
|
32
|
+
await this.wait(100)
|
|
33
|
+
}
|
|
34
|
+
|
|
27
35
|
@test()
|
|
28
36
|
protected static async dontShowProgressIfPrompting() {
|
|
29
37
|
this.prompt()
|
|
@@ -39,6 +47,7 @@ export default class TerminalInterfaceTest extends AbstractSpruceTest {
|
|
|
39
47
|
|
|
40
48
|
@test()
|
|
41
49
|
protected static async askingToPromptThrowsIfInCi() {
|
|
50
|
+
delete process.env.IS_TESTING_SELF
|
|
42
51
|
process.env.CIRCLECI = 'true'
|
|
43
52
|
const err = await assert.doesThrowAsync(() =>
|
|
44
53
|
this.ui.prompt({ type: 'text' })
|
|
@@ -270,7 +270,7 @@ export default class SpruceError extends AbstractSpruceError<ErrorOptions> {
|
|
|
270
270
|
break
|
|
271
271
|
|
|
272
272
|
case 'CANNOT_PROMPT_IN_CI':
|
|
273
|
-
message = '
|
|
273
|
+
message = 'You cannot prompt in CI!'
|
|
274
274
|
break
|
|
275
275
|
|
|
276
276
|
case 'APP_CONTROLLER_ALREADY_EXISTS':
|
|
@@ -50,13 +50,14 @@ export default class LoginAction extends AbstractAction<OptionsSchema> {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
const client = await this.connectToApi()
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
let [{ skills }] = await client.emitAndFlattenResponses(
|
|
54
|
+
'list-skills::v2020_12_25',
|
|
55
|
+
{
|
|
56
|
+
payload: {
|
|
57
|
+
shouldOnlyShowMine: true,
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
)
|
|
60
61
|
|
|
61
62
|
if (skillSlug) {
|
|
62
63
|
const match = skills.find((s) => s.slug === skillSlug)
|
package/src/utilities/isCi.ts
CHANGED
package/.DS_Store
DELETED
|
Binary file
|
package/.env
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
GOOGLE_SERVICE_EMAIL="sprucebot@sprucebot.iam.gserviceaccount.com"
|
|
2
|
-
GOOGLE_SERVICE_EMAIL_TEST="sprucebot@sprucebot.iam.gserviceaccount.com"
|
|
3
|
-
SHEETS_REPORTER_ADAPTER="DummyAdapter"
|
|
4
|
-
SHEETS_REPORTER_ADAPTER_TEST="DummyAdapter"
|
|
5
|
-
GOOGLE_SERVICE_PRIVATE_KEY="some bullshit"
|
|
6
|
-
CLI_RENDER_STACK_TRACES="true"
|
|
7
|
-
WILL_BUILD_CACHE_SCRIPT="diskutil erasevolume HFS+ "RAMDisk" `hdiutil attach -nomount ram://51457280`"
|
|
8
|
-
CLEAN_CACHE_SCRIPT="/sbin/umount -f /Volumes/RAMDisk"
|
|
9
|
-
TEST_CACHE_ROOT_DIR="/Volumes/RAMDisk"
|
|
10
|
-
DEMO_NUMBER="555-004-0001"
|
|
11
|
-
DEMO_NUMBER_LOGIN_AS_SKILL="555-004-0101"
|
|
12
|
-
DEMO_NUMBER_INSTALL_SKILL="555-004-0201"
|
|
13
|
-
DEMO_NUMBER_GLOBAL_EVENTS="555-004-0301"
|
|
14
|
-
DEMO_NUMBER_EVENTS_ON_BOOT="555-004-0401"
|
|
15
|
-
DEMO_NUMBER_VIEWS_ON_BOOT="555-004-0501"
|
|
16
|
-
DEMO_NUMBER_CREATING_AN_EVENT="555-004-0601"
|
|
17
|
-
DEMO_NUMBER_EVENT_STORE="555-004-0601"
|
|
18
|
-
SANDBOX_DEMO_NUMBER="555-004-0002"
|
|
19
|
-
TEST_HOST="http://127.0.0.1:8081"
|
|
20
|
-
# HOST="http://127.0.0.1:8081"
|
|
21
|
-
SHOULD_RENDER_TEST_LOGS="false"
|
|
22
|
-
MAX_SIMULTANEOUS_SKILL_CACHERS=5
|
|
23
|
-
|
|
24
|
-
CLEANUP_TEST_SKILL_DIRS="true"
|
|
25
|
-
TEST_SKILLS_TO_CACHE="*"
|
package/.env-dev
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
GOOGLE_SERVICE_EMAIL="sprucebot@sprucebot.iam.gserviceaccount.com"
|
|
2
|
-
GOOGLE_SERVICE_EMAIL_TEST="sprucebot@sprucebot.iam.gserviceaccount.com"
|
|
3
|
-
SHEETS_REPORTER_ADAPTER="MockAdapter"
|
|
4
|
-
SHEETS_REPORTER_ADAPTER_TEST="MockAdapter"
|
|
5
|
-
GOOGLE_SERVICE_PRIVATE_KEY="some bullshit"
|
|
6
|
-
CLI_RENDER_STACK_TRACES="true"
|
|
7
|
-
WILL_BUILD_CACHE_SCRIPT="diskutil erasevolume HFS+ "RAMDisk" `hdiutil attach -nomount ram://51457280`"
|
|
8
|
-
CLEAN_CACHE_SCRIPT="/sbin/umount -f /Volumes/RAMDisk"
|
|
9
|
-
TEST_CACHE_ROOT_DIR="/Volumes/RAMDisk"
|
|
10
|
-
DEMO_NUMBER="555-004-0001"
|
|
11
|
-
DEMO_NUMBER_LOGIN_AS_SKILL="555-004-0101"
|
|
12
|
-
DEMO_NUMBER_INSTALL_SKILL="555-004-0201"
|
|
13
|
-
DEMO_NUMBER_GLOBAL_EVENTS="555-004-0301"
|
|
14
|
-
DEMO_NUMBER_EVENTS_ON_BOOT="555-004-0401"
|
|
15
|
-
DEMO_NUMBER_VIEWS_ON_BOOT="555-004-0501"
|
|
16
|
-
DEMO_NUMBER_CREATING_AN_EVENT="555-004-0601"
|
|
17
|
-
SANDBOX_DEMO_NUMBER="555-004-0002"
|
|
18
|
-
TEST_HOST="https://developer.mercury.spruce.ai"
|
|
19
|
-
HOST="https://developer.mercury.spruce.ai"
|
|
20
|
-
SHOULD_RENDER_TEST_LOGS="true"
|
|
21
|
-
MAX_SIMULTANEOUS_SKILL_CACHERS=5
|
|
22
|
-
|
|
23
|
-
CLEANUP_TEST_SKILL_DIRS="false"
|
|
24
|
-
TEST_SKILLS_TO_CACHE="views"
|