@sprucelabs/spruce-agent-plugin 0.0.1 → 0.0.3
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/build/esm/plugins/agent.plugin.d.ts +2 -1
- package/build/esm/plugins/agent.plugin.js +8 -2
- package/build/plugins/agent.plugin.d.ts +2 -1
- package/build/plugins/agent.plugin.js +8 -2
- package/package.json +1 -1
- package/build/esm/.spruce/errors/errors.types.js.map +0 -1
- package/build/esm/.spruce/errors/options.types.js.map +0 -1
- package/build/esm/.spruce/errors/spruceAgentPlugin/invalidSystemPromptFile.schema.d.ts +0 -3
- package/build/esm/.spruce/errors/spruceAgentPlugin/invalidSystemPromptFile.schema.js +0 -18
- package/build/esm/.spruce/errors/spruceAgentPlugin/invalidSystemPromptFile.schema.js.map +0 -1
- package/build/esm/.spruce/errors/spruceAgentPlugin/noSystemPromptFile.schema.d.ts +0 -3
- package/build/esm/.spruce/errors/spruceAgentPlugin/noSystemPromptFile.schema.js +0 -11
- package/build/esm/.spruce/errors/spruceAgentPlugin/noSystemPromptFile.schema.js.map +0 -1
- package/build/esm/.spruce/schemas/fields/fieldClassMap.d.ts +0 -2
- package/build/esm/.spruce/schemas/fields/fieldClassMap.js +0 -4
- package/build/esm/.spruce/schemas/fields/fieldClassMap.js.map +0 -1
- package/build/esm/.spruce/schemas/fields/fields.types.d.ts +0 -1
- package/build/esm/.spruce/schemas/fields/fields.types.js +0 -2
- package/build/esm/.spruce/schemas/fields/fields.types.js.map +0 -1
- package/build/esm/.spruce/settings.json +0 -13
- package/build/esm/.spruce/skill.d.ts +0 -3
- package/build/esm/.spruce/skill.js +0 -12
- package/build/esm/.spruce/skill.js.map +0 -1
- package/build/esm/errors/SpruceError.js.map +0 -1
- package/build/esm/errors/invalidSystemPromptFile.builder.js.map +0 -1
- package/build/esm/errors/noSystemPromptFile.builder.js.map +0 -1
- package/build/esm/index.js.map +0 -1
- package/build/esm/plugins/agent.plugin.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { BootCallback, HealthCheckItem, Skill, SkillFeature } from '@sprucelabs/spruce-skill-utils';
|
|
2
2
|
export declare class AgentFeature implements SkillFeature {
|
|
3
3
|
private skill;
|
|
4
|
+
private log;
|
|
4
5
|
constructor(skill: Skill);
|
|
5
6
|
static doesFileExist(path: string): boolean;
|
|
6
7
|
execute(): Promise<void>;
|
|
7
|
-
private
|
|
8
|
+
private registerPlatformAgent;
|
|
8
9
|
private connectToApi;
|
|
9
10
|
private parseName;
|
|
10
11
|
private InvalidPromptFileError;
|
|
@@ -12,6 +12,7 @@ import SpruceError from '../errors/SpruceError.js';
|
|
|
12
12
|
export class AgentFeature {
|
|
13
13
|
constructor(skill) {
|
|
14
14
|
this.skill = skill;
|
|
15
|
+
this.log = skill.buildLog('Agent.Feature');
|
|
15
16
|
}
|
|
16
17
|
static doesFileExist(path) {
|
|
17
18
|
return diskUtil.doesFileExist(path);
|
|
@@ -23,10 +24,10 @@ export class AgentFeature {
|
|
|
23
24
|
return;
|
|
24
25
|
}
|
|
25
26
|
const name = this.parseName(prompt);
|
|
26
|
-
yield this.
|
|
27
|
+
yield this.registerPlatformAgent(name, prompt);
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
+
registerPlatformAgent(name, prompt) {
|
|
30
31
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31
32
|
const client = yield this.connectToApi();
|
|
32
33
|
yield client.emitAndFlattenResponses('register-agent::v2020_12_25', {
|
|
@@ -37,6 +38,7 @@ export class AgentFeature {
|
|
|
37
38
|
},
|
|
38
39
|
},
|
|
39
40
|
});
|
|
41
|
+
this.log.info(`Agent registration complete.`);
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
44
|
connectToApi() {
|
|
@@ -55,6 +57,7 @@ export class AgentFeature {
|
|
|
55
57
|
if (!name) {
|
|
56
58
|
throw this.InvalidPromptFileError();
|
|
57
59
|
}
|
|
60
|
+
this.log.info(`System Agent Name: ${name}`);
|
|
58
61
|
return name;
|
|
59
62
|
}
|
|
60
63
|
InvalidPromptFileError() {
|
|
@@ -64,10 +67,13 @@ export class AgentFeature {
|
|
|
64
67
|
});
|
|
65
68
|
}
|
|
66
69
|
readSystemPromptFile() {
|
|
70
|
+
this.log.info('Checking for system prompt file...');
|
|
67
71
|
const promptPath = this.resolvePlatformPromptPath();
|
|
68
72
|
if (!promptPath) {
|
|
73
|
+
this.log.info('No system prompt file found.');
|
|
69
74
|
return false;
|
|
70
75
|
}
|
|
76
|
+
this.log.info(`System prompt file found at ${promptPath}.`);
|
|
71
77
|
const prompt = diskUtil.readFile(promptPath);
|
|
72
78
|
return prompt;
|
|
73
79
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { BootCallback, HealthCheckItem, Skill, SkillFeature } from '@sprucelabs/spruce-skill-utils';
|
|
2
2
|
export declare class AgentFeature implements SkillFeature {
|
|
3
3
|
private skill;
|
|
4
|
+
private log;
|
|
4
5
|
constructor(skill: Skill);
|
|
5
6
|
static doesFileExist(path: string): boolean;
|
|
6
7
|
execute(): Promise<void>;
|
|
7
|
-
private
|
|
8
|
+
private registerPlatformAgent;
|
|
8
9
|
private connectToApi;
|
|
9
10
|
private parseName;
|
|
10
11
|
private InvalidPromptFileError;
|
|
@@ -9,6 +9,7 @@ const SpruceError_1 = __importDefault(require("../errors/SpruceError"));
|
|
|
9
9
|
class AgentFeature {
|
|
10
10
|
constructor(skill) {
|
|
11
11
|
this.skill = skill;
|
|
12
|
+
this.log = skill.buildLog('Agent.Feature');
|
|
12
13
|
}
|
|
13
14
|
static doesFileExist(path) {
|
|
14
15
|
return spruce_skill_utils_1.diskUtil.doesFileExist(path);
|
|
@@ -19,9 +20,9 @@ class AgentFeature {
|
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
22
|
const name = this.parseName(prompt);
|
|
22
|
-
await this.
|
|
23
|
+
await this.registerPlatformAgent(name, prompt);
|
|
23
24
|
}
|
|
24
|
-
async
|
|
25
|
+
async registerPlatformAgent(name, prompt) {
|
|
25
26
|
const client = await this.connectToApi();
|
|
26
27
|
await client.emitAndFlattenResponses('register-agent::v2020_12_25', {
|
|
27
28
|
payload: {
|
|
@@ -31,6 +32,7 @@ class AgentFeature {
|
|
|
31
32
|
},
|
|
32
33
|
},
|
|
33
34
|
});
|
|
35
|
+
this.log.info(`Agent registration complete.`);
|
|
34
36
|
}
|
|
35
37
|
async connectToApi() {
|
|
36
38
|
const events = this.skill.getFeatureByCode('event');
|
|
@@ -45,6 +47,7 @@ class AgentFeature {
|
|
|
45
47
|
if (!name) {
|
|
46
48
|
throw this.InvalidPromptFileError();
|
|
47
49
|
}
|
|
50
|
+
this.log.info(`System Agent Name: ${name}`);
|
|
48
51
|
return name;
|
|
49
52
|
}
|
|
50
53
|
InvalidPromptFileError() {
|
|
@@ -54,10 +57,13 @@ class AgentFeature {
|
|
|
54
57
|
});
|
|
55
58
|
}
|
|
56
59
|
readSystemPromptFile() {
|
|
60
|
+
this.log.info('Checking for system prompt file...');
|
|
57
61
|
const promptPath = this.resolvePlatformPromptPath();
|
|
58
62
|
if (!promptPath) {
|
|
63
|
+
this.log.info('No system prompt file found.');
|
|
59
64
|
return false;
|
|
60
65
|
}
|
|
66
|
+
this.log.info(`System prompt file found at ${promptPath}.`);
|
|
61
67
|
const prompt = spruce_skill_utils_1.diskUtil.readFile(promptPath);
|
|
62
68
|
return prompt;
|
|
63
69
|
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.types.js","sourceRoot":"","sources":["../../../src/.spruce/errors/errors.types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"options.types.js","sourceRoot":"","sources":["../../../src/.spruce/errors/options.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const schema_1 = require('@sprucelabs/schema');
|
|
4
|
-
const invalidSystemPromptFileSchema = {
|
|
5
|
-
id: 'invalidSystemPromptFile',
|
|
6
|
-
namespace: 'SpruceAgentPlugin',
|
|
7
|
-
name: 'Invalid system prompt file',
|
|
8
|
-
fields: {
|
|
9
|
-
/** . */
|
|
10
|
-
'path': {
|
|
11
|
-
type: 'text',
|
|
12
|
-
isRequired: true,
|
|
13
|
-
options: undefined
|
|
14
|
-
},
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
schema_1.SchemaRegistry.getInstance().trackSchema(invalidSystemPromptFileSchema);
|
|
18
|
-
exports.default = invalidSystemPromptFileSchema;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invalidSystemPromptFile.schema.js","sourceRoot":"","sources":["../../../../src/.spruce/errors/spruceAgentPlugin/invalidSystemPromptFile.schema.ts"],"names":[],"mappings":";;AAAA,+CAAmD;AAKnD,MAAM,6BAA6B,GAAkE;IACpG,EAAE,EAAE,yBAAyB;IAC7B,SAAS,EAAE,mBAAmB;IAC9B,IAAI,EAAE,4BAA4B;IAC9B,MAAM,EAAE;QACA,QAAQ;QACR,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,SAAS;SACrB;KACR;CACL,CAAA;AAED,uBAAc,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAA;AAEvE,kBAAe,6BAA6B,CAAA"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const schema_1 = require('@sprucelabs/schema');
|
|
4
|
-
const noSystemPromptFileSchema = {
|
|
5
|
-
id: 'noSystemPromptFile',
|
|
6
|
-
namespace: 'SpruceAgentPlugin',
|
|
7
|
-
name: 'No system prompt file',
|
|
8
|
-
fields: {}
|
|
9
|
-
};
|
|
10
|
-
schema_1.SchemaRegistry.getInstance().trackSchema(noSystemPromptFileSchema);
|
|
11
|
-
exports.default = noSystemPromptFileSchema;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"noSystemPromptFile.schema.js","sourceRoot":"","sources":["../../../../src/.spruce/errors/spruceAgentPlugin/noSystemPromptFile.schema.ts"],"names":[],"mappings":";;AAAA,+CAAmD;AAKnD,MAAM,wBAAwB,GAA6D;IAC1F,EAAE,EAAE,oBAAoB;IACxB,SAAS,EAAE,mBAAmB;IAC9B,IAAI,EAAE,uBAAuB;IACzB,MAAM,EAAE,EACP;CACL,CAAA;AAED,uBAAc,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAA;AAElE,kBAAe,wBAAwB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldClassMap.js","sourceRoot":"","sources":["../../../../src/.spruce/schemas/fields/fieldClassMap.ts"],"names":[],"mappings":";;AAAA,+CAAkD;AAKlD,kBAAe,sBAAa,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { FieldDefinitions, FieldDefinitionMap, FieldValueTypeGeneratorMap, FieldMap } from '@sprucelabs/schema';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fields.types.js","sourceRoot":"","sources":["../../../../src/.spruce/schemas/fields/fields.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const path_1 = __importDefault(require('path'));
|
|
7
|
-
const spruce_skill_booter_1 = __importDefault(require('@sprucelabs/spruce-skill-booter'));
|
|
8
|
-
exports.default = new spruce_skill_booter_1.default({
|
|
9
|
-
rootDir: path_1.default.join(__dirname, '..', '..'),
|
|
10
|
-
activeDir: path_1.default.join(__dirname, '..'),
|
|
11
|
-
hashSpruceDir: path_1.default.join(__dirname, '..', '.spruce'),
|
|
12
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/.spruce/skill.ts"],"names":[],"mappings":";;;;;AAAA,gDAA2B;AAC3B,0FAAmD;AAEnD,kBAAe,IAAI,6BAAK,CAAC;IACrB,OAAO,EAAE,cAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;IAC7C,SAAS,EAAE,cAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACzC,aAAa,EAAE,cAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;CAC3D,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpruceError.js","sourceRoot":"","sources":["../../src/errors/SpruceError.ts"],"names":[],"mappings":";;;;;AAAA,8DAAmD;AAGnD,MAAqB,WAAY,SAAQ,eAAiC;IAC/D,eAAe;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;QACxB,IAAI,OAAO,CAAA;QAEX,QAAQ,OAAO,EAAE,IAAI,EAAE,CAAC;YACpB,KAAK,4BAA4B;gBAC7B,OAAO,GAAG,8BAA8B,OAAO,CAAC,IAAI,kHAAkH,CAAA;gBACtK,MAAK;YAET,KAAK,uBAAuB;gBACxB,OAAO,GAAG,wFAAwF,CAAA;gBAClG,MAAK;YAET;gBACI,OAAO,GAAG,KAAK,CAAC,eAAe,EAAE,CAAA;QACzC,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe;YACvC,CAAC,CAAC,OAAO,CAAC,eAAe;YACzB,CAAC,CAAC,OAAO,CAAA;QAEb,OAAO,WAAW,CAAA;IACtB,CAAC;CACJ;AAxBD,8BAwBC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invalidSystemPromptFile.builder.js","sourceRoot":"","sources":["../../src/errors/invalidSystemPromptFile.builder.ts"],"names":[],"mappings":";;AAAA,+CAAqD;AAErD,kBAAe,IAAA,yBAAgB,EAAC;IAC5B,EAAE,EAAE,yBAAyB;IAC7B,IAAI,EAAE,4BAA4B;IAClC,MAAM,EAAE;QACJ,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;SACnB;KACJ;CACJ,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"noSystemPromptFile.builder.js","sourceRoot":"","sources":["../../src/errors/noSystemPromptFile.builder.ts"],"names":[],"mappings":";;AAAA,+CAAqD;AAErD,kBAAe,IAAA,yBAAgB,EAAC;IAC5B,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,uBAAuB;IAC7B,MAAM,EAAE,EAAE;CACb,CAAC,CAAA"}
|
package/build/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA0D;AAAjD,uHAAA,OAAO,OAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.plugin.js","sourceRoot":"","sources":["../../src/plugins/agent.plugin.ts"],"names":[],"mappings":"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"}
|