@defai.digital/ability-domain 13.4.9 → 13.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/manager.d.ts +2 -0
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +40 -15
- package/dist/manager.js.map +1 -1
- package/package.json +2 -2
- package/src/manager.ts +44 -16
package/dist/manager.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export declare class DefaultAbilityManager implements AbilityManager {
|
|
|
19
19
|
/**
|
|
20
20
|
* Inject abilities into agent context
|
|
21
21
|
* Also auto-injects .automatosx/rules.md if present in the project
|
|
22
|
+
*
|
|
23
|
+
* INV-ABL-001: Core abilities are injected first (before project rules)
|
|
22
24
|
*/
|
|
23
25
|
injectAbilities(agentId: string, task: string, coreAbilities?: string[], options?: AbilityInjectionOptions): Promise<AbilityInjectionResult>;
|
|
24
26
|
/**
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAwBpB;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAExD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,QAAQ,EAAE,eAAe,EACzB,MAAM,GAAE,mBAAmD;IAG9E;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,EAAE,CAAC;IAqBrB
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAwBpB;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAExD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,QAAQ,EAAE,eAAe,EACzB,MAAM,GAAE,mBAAmD;IAG9E;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,EAAE,CAAC;IAqBrB;;;;;OAKG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,sBAAsB,CAAC;IAoFlC;;OAEG;IACG,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOjE;;OAEG;IACH,OAAO,CAAC,YAAY;IAmCpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,cAAc;CAIvB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,cAAc,CAKhB"}
|
package/dist/manager.js
CHANGED
|
@@ -57,6 +57,8 @@ export class DefaultAbilityManager {
|
|
|
57
57
|
/**
|
|
58
58
|
* Inject abilities into agent context
|
|
59
59
|
* Also auto-injects .automatosx/rules.md if present in the project
|
|
60
|
+
*
|
|
61
|
+
* INV-ABL-001: Core abilities are injected first (before project rules)
|
|
60
62
|
*/
|
|
61
63
|
async injectAbilities(agentId, task, coreAbilities, options) {
|
|
62
64
|
const maxAbilities = options?.maxAbilities ?? this.config.maxAbilitiesPerAgent;
|
|
@@ -68,23 +70,15 @@ export class DefaultAbilityManager {
|
|
|
68
70
|
const contentParts = [];
|
|
69
71
|
let currentTokens = 0;
|
|
70
72
|
let truncated = false;
|
|
71
|
-
//
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (rulesTokens <= maxTokens) {
|
|
78
|
-
contentParts.push(rulesContent);
|
|
79
|
-
injectedAbilities.push('_project-rules');
|
|
80
|
-
currentTokens += rulesTokens;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
for (const ability of abilities) {
|
|
73
|
+
// INV-ABL-001: Separate core abilities from others to inject them first
|
|
74
|
+
const coreAbilitySet = new Set(coreAbilities ?? []);
|
|
75
|
+
const coreAbilitiesList = abilities.filter(a => coreAbilitySet.has(a.abilityId));
|
|
76
|
+
const otherAbilities = abilities.filter(a => !coreAbilitySet.has(a.abilityId));
|
|
77
|
+
// Helper function to inject an ability
|
|
78
|
+
const injectAbility = (ability) => {
|
|
84
79
|
const abilityTokens = this.estimateTokens(ability.content);
|
|
85
80
|
if (currentTokens + abilityTokens > maxTokens) {
|
|
86
|
-
|
|
87
|
-
break;
|
|
81
|
+
return false; // Would exceed token limit
|
|
88
82
|
}
|
|
89
83
|
const header = options?.includeMetadata
|
|
90
84
|
? `## ${ability.displayName ?? ability.abilityId}\n\n`
|
|
@@ -92,6 +86,37 @@ export class DefaultAbilityManager {
|
|
|
92
86
|
contentParts.push(header + ability.content);
|
|
93
87
|
injectedAbilities.push(ability.abilityId);
|
|
94
88
|
currentTokens += abilityTokens;
|
|
89
|
+
return true;
|
|
90
|
+
};
|
|
91
|
+
// INV-ABL-001: First inject core abilities (in order of relevance score)
|
|
92
|
+
for (const ability of coreAbilitiesList) {
|
|
93
|
+
if (!injectAbility(ability)) {
|
|
94
|
+
truncated = true;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Then inject project rules if present (.automatosx/rules.md)
|
|
99
|
+
if (!truncated) {
|
|
100
|
+
const projectRules = loadProjectRules();
|
|
101
|
+
if (projectRules) {
|
|
102
|
+
const rulesHeader = '## Project Rules\n\nThe following rules MUST be followed for all code in this project:\n\n';
|
|
103
|
+
const rulesContent = rulesHeader + projectRules;
|
|
104
|
+
const rulesTokens = this.estimateTokens(rulesContent);
|
|
105
|
+
if (currentTokens + rulesTokens <= maxTokens) {
|
|
106
|
+
contentParts.push(rulesContent);
|
|
107
|
+
injectedAbilities.push('_project-rules');
|
|
108
|
+
currentTokens += rulesTokens;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Finally inject remaining abilities
|
|
113
|
+
if (!truncated) {
|
|
114
|
+
for (const ability of otherAbilities) {
|
|
115
|
+
if (!injectAbility(ability)) {
|
|
116
|
+
truncated = true;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
95
120
|
}
|
|
96
121
|
return {
|
|
97
122
|
agentId,
|
package/dist/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAQ7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,SAAS,gBAAgB,CAAC,UAAmB;IAC3C,MAAM,OAAO,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAEb;IACA;IAFnB,YACmB,QAAyB,EACzB,SAA8B,6BAA6B;QAD3D,aAAQ,GAAR,QAAQ,CAAiB;QACzB,WAAM,GAAN,MAAM,CAAqD;IAC3E,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,OAAe,EACf,IAAY,EACZ,aAAwB,EACxB,YAAqB;QAErB,MAAM,GAAG,GAAG,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAElD,+BAA+B;QAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE9D,uCAAuC;QACvC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,IAAI,EAAE,CAAC;SAClE,CAAC,CAAC,CAAC;QAEJ,2BAA2B;QAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,yBAAyB;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defai.digital/ability-domain",
|
|
3
|
-
"version": "13.4.
|
|
3
|
+
"version": "13.4.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Ability management for AutomatosX agents",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@defai.digital/contracts": "13.4.
|
|
36
|
+
"@defai.digital/contracts": "13.4.10"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"typescript": "^5.7.2"
|
package/src/manager.ts
CHANGED
|
@@ -77,6 +77,8 @@ export class DefaultAbilityManager implements AbilityManager {
|
|
|
77
77
|
/**
|
|
78
78
|
* Inject abilities into agent context
|
|
79
79
|
* Also auto-injects .automatosx/rules.md if present in the project
|
|
80
|
+
*
|
|
81
|
+
* INV-ABL-001: Core abilities are injected first (before project rules)
|
|
80
82
|
*/
|
|
81
83
|
async injectAbilities(
|
|
82
84
|
agentId: string,
|
|
@@ -101,26 +103,17 @@ export class DefaultAbilityManager implements AbilityManager {
|
|
|
101
103
|
let currentTokens = 0;
|
|
102
104
|
let truncated = false;
|
|
103
105
|
|
|
104
|
-
//
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const rulesContent = rulesHeader + projectRules;
|
|
109
|
-
const rulesTokens = this.estimateTokens(rulesContent);
|
|
110
|
-
|
|
111
|
-
if (rulesTokens <= maxTokens) {
|
|
112
|
-
contentParts.push(rulesContent);
|
|
113
|
-
injectedAbilities.push('_project-rules');
|
|
114
|
-
currentTokens += rulesTokens;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
106
|
+
// INV-ABL-001: Separate core abilities from others to inject them first
|
|
107
|
+
const coreAbilitySet = new Set(coreAbilities ?? []);
|
|
108
|
+
const coreAbilitiesList = abilities.filter(a => coreAbilitySet.has(a.abilityId));
|
|
109
|
+
const otherAbilities = abilities.filter(a => !coreAbilitySet.has(a.abilityId));
|
|
117
110
|
|
|
118
|
-
|
|
111
|
+
// Helper function to inject an ability
|
|
112
|
+
const injectAbility = (ability: typeof abilities[0]): boolean => {
|
|
119
113
|
const abilityTokens = this.estimateTokens(ability.content);
|
|
120
114
|
|
|
121
115
|
if (currentTokens + abilityTokens > maxTokens) {
|
|
122
|
-
|
|
123
|
-
break;
|
|
116
|
+
return false; // Would exceed token limit
|
|
124
117
|
}
|
|
125
118
|
|
|
126
119
|
const header = options?.includeMetadata
|
|
@@ -130,6 +123,41 @@ export class DefaultAbilityManager implements AbilityManager {
|
|
|
130
123
|
contentParts.push(header + ability.content);
|
|
131
124
|
injectedAbilities.push(ability.abilityId);
|
|
132
125
|
currentTokens += abilityTokens;
|
|
126
|
+
return true;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
// INV-ABL-001: First inject core abilities (in order of relevance score)
|
|
130
|
+
for (const ability of coreAbilitiesList) {
|
|
131
|
+
if (!injectAbility(ability)) {
|
|
132
|
+
truncated = true;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Then inject project rules if present (.automatosx/rules.md)
|
|
138
|
+
if (!truncated) {
|
|
139
|
+
const projectRules = loadProjectRules();
|
|
140
|
+
if (projectRules) {
|
|
141
|
+
const rulesHeader = '## Project Rules\n\nThe following rules MUST be followed for all code in this project:\n\n';
|
|
142
|
+
const rulesContent = rulesHeader + projectRules;
|
|
143
|
+
const rulesTokens = this.estimateTokens(rulesContent);
|
|
144
|
+
|
|
145
|
+
if (currentTokens + rulesTokens <= maxTokens) {
|
|
146
|
+
contentParts.push(rulesContent);
|
|
147
|
+
injectedAbilities.push('_project-rules');
|
|
148
|
+
currentTokens += rulesTokens;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Finally inject remaining abilities
|
|
154
|
+
if (!truncated) {
|
|
155
|
+
for (const ability of otherAbilities) {
|
|
156
|
+
if (!injectAbility(ability)) {
|
|
157
|
+
truncated = true;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
133
161
|
}
|
|
134
162
|
|
|
135
163
|
return {
|