rhachet-roles-ehmpathy 1.7.0 → 1.8.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/dist/contract/commands/codegenBriefOptions.js +1 -1
- package/dist/contract/commands/codegenBriefOptions.js.map +1 -1
- package/dist/logic/roles/architect/.briefs/criteria.given_when_then.[seed].[idea].md +35 -0
- package/dist/logic/roles/architect/.briefs/criteria.given_when_then.[seed].md +20 -0
- package/dist/logic/roles/architect/.briefs/criteria.practices/prefer.env_access.prep_over_dev.md +12 -0
- package/dist/logic/roles/architect/getArchitectRole.d.ts +2 -0
- package/dist/logic/roles/architect/getArchitectRole.js +27 -0
- package/dist/logic/roles/architect/getArchitectRole.js.map +1 -0
- package/dist/logic/roles/bhrain/getBhrainRole.js +19 -14
- package/dist/logic/roles/bhrain/getBhrainRole.js.map +1 -1
- package/dist/logic/roles/ecologist/getEcologistRole.js +12 -7
- package/dist/logic/roles/ecologist/getEcologistRole.js.map +1 -1
- package/dist/logic/roles/getRoleRegistry.js +2 -0
- package/dist/logic/roles/getRoleRegistry.js.map +1 -1
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/never.term.script.md +7 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.emojis.chill_nature.md +24 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.jq.over_alt.[demo].md +29 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.terraform.[criteria].md +4 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.terraform.[seed].md +17 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.dependency.pinned_versions.md +3 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.idempotency.md +33 -0
- package/dist/logic/roles/mechanic/getMechanicRole.js +7 -2
- package/dist/logic/roles/mechanic/getMechanicRole.js.map +1 -1
- package/dist/logic/roles/terminal.commander/getCommanderRole.js +7 -2
- package/dist/logic/roles/terminal.commander/getCommanderRole.js.map +1 -1
- package/package.json +2 -2
|
@@ -50,7 +50,7 @@ export type BriefOption${input.role} = typeof options[number];
|
|
|
50
50
|
// npx tsx src/contract/commands/codegenBriefOptions.ts
|
|
51
51
|
if (require.main === module) {
|
|
52
52
|
void command({ role: 'Ecologist' });
|
|
53
|
-
|
|
53
|
+
void command({ role: 'Architect' });
|
|
54
54
|
void command({ role: 'Designer' });
|
|
55
55
|
void command({ role: 'Mechanic' });
|
|
56
56
|
void command({ role: 'Bhrain' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegenBriefOptions.js","sourceRoot":"","sources":["../../../src/contract/commands/codegenBriefOptions.ts"],"names":[],"mappings":";;;;;AAAA,qDAAiD;AACjD,0DAA6B;AAC7B,4CAAoB;AACpB,gDAAwB;AACxB,+DAAsD;AAEtD,MAAM,OAAO,GAAG,IAAA,sBAAS,EACvB;IACE,IAAI,EAAE,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC/B,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,SAAS,GAAG,QAAQ;IACzB,GAAG,EAAE,OAAO;CACb,EACD,KAAK,EAAE,KAEN,EAAE,EAAE;IACH,kDAAkD;IAClD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CACzB,CAAC,MAAM,IAAA,qCAAc,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACzC,oBAAoB,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CACzD,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,cAAc;QAC5C,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,4FAA4F;KACxI,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,IAAA,mBAAI,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,6BAA6B;IAC7B,MAAM,IAAI,GAAG,SAAS;SACnB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACtD,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CAAC,cAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAC7D,CAAC;IACJ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG;;0DAEiC,KAAK,CAAC,IAAI;;;oCAGhC,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;;;;EAI3D,YAAY;;;yBAGW,KAAK,CAAC,IAAI;CAClC,CAAC;IAEE,qBAAqB;IACrB,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAC1B,SAAS,EACT,SAAS,KAAK,CAAC,IAAI,0BAA0B,CAC9C,CAAC;IACF,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtC,CAAC,CACF,CAAC;AAEF,uDAAuD;AACvD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpC,
|
|
1
|
+
{"version":3,"file":"codegenBriefOptions.js","sourceRoot":"","sources":["../../../src/contract/commands/codegenBriefOptions.ts"],"names":[],"mappings":";;;;;AAAA,qDAAiD;AACjD,0DAA6B;AAC7B,4CAAoB;AACpB,gDAAwB;AACxB,+DAAsD;AAEtD,MAAM,OAAO,GAAG,IAAA,sBAAS,EACvB;IACE,IAAI,EAAE,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC/B,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,SAAS,GAAG,QAAQ;IACzB,GAAG,EAAE,OAAO;CACb,EACD,KAAK,EAAE,KAEN,EAAE,EAAE;IACH,kDAAkD;IAClD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CACzB,CAAC,MAAM,IAAA,qCAAc,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACzC,oBAAoB,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CACzD,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,cAAc;QAC5C,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,4FAA4F;KACxI,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,IAAA,mBAAI,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,6BAA6B;IAC7B,MAAM,IAAI,GAAG,SAAS;SACnB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACtD,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CAAC,cAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAC7D,CAAC;IACJ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG;;0DAEiC,KAAK,CAAC,IAAI;;;oCAGhC,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;;;;EAI3D,YAAY;;;yBAGW,KAAK,CAAC,IAAI;CAClC,CAAC;IAEE,qBAAqB;IACrB,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAC1B,SAAS,EACT,SAAS,KAAK,CAAC,IAAI,0BAA0B,CAC9C,CAAC;IACF,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtC,CAAC,CACF,CAAC;AAEF,uDAAuD;AACvD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpC,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpC,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[idea] = nest then's within sothat? when many thens support the same sothat?
|
|
2
|
+
|
|
3
|
+
when([t4] bastion IAM instance profile is provisioned via terraform)
|
|
4
|
+
sothat(SSM sessions can be established to bastion)
|
|
5
|
+
then(instance profile includes AmazonSSMManagedInstanceCore policy)
|
|
6
|
+
then(instance profile allows ssm:StartSession action)
|
|
7
|
+
sothat(auto-pause can detect when bastion is idle)
|
|
8
|
+
then(instance profile allows ec2:StopInstances for self-stop)
|
|
9
|
+
then(instance profile allows ec2:DescribeInstances to check instance state)
|
|
10
|
+
then(instance profile allows ssm:DescribeSessions to detect active sessions)
|
|
11
|
+
then(instance profile allows ssm:GetConnectionStatus to verify session state)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
i.e.,
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
given(scene)
|
|
18
|
+
when(cause)
|
|
19
|
+
sothat(benefit)
|
|
20
|
+
then(effect.1)
|
|
21
|
+
then(effect.2)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
e.g.,
|
|
28
|
+
|
|
29
|
+
given(its dinner time)
|
|
30
|
+
when(dinner is served)
|
|
31
|
+
sothat(we can eat with cleanly)
|
|
32
|
+
then(we should have cutlery appropriate to the dish)
|
|
33
|
+
then(we should have plates appropriate to the dish)
|
|
34
|
+
then(we should have napkins to clean with)
|
|
35
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
criteria is best written in behavior-driven-development format
|
|
2
|
+
|
|
3
|
+
e.g.,
|
|
4
|
+
|
|
5
|
+
given(scene)
|
|
6
|
+
when([t0] nochange)
|
|
7
|
+
then(assert initial condition)
|
|
8
|
+
...
|
|
9
|
+
when([t1] cause)
|
|
10
|
+
then(effect)
|
|
11
|
+
sothat(benefit) # optional
|
|
12
|
+
...
|
|
13
|
+
when([t2] cause)
|
|
14
|
+
then(effect)
|
|
15
|
+
sothat(benefit) # optional
|
|
16
|
+
...
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
dont forget that given and when can nest inside eachother; but then() goes at the root
|
|
20
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ROLE_ARCHITECT = void 0;
|
|
4
|
+
const rhachet_1 = require("rhachet");
|
|
5
|
+
exports.ROLE_ARCHITECT = rhachet_1.Role.build({
|
|
6
|
+
slug: 'architect',
|
|
7
|
+
name: 'Architect',
|
|
8
|
+
purpose: 'design system',
|
|
9
|
+
readme: `
|
|
10
|
+
## 🏛️ Architect
|
|
11
|
+
|
|
12
|
+
- **scale**: system-level, cross-cutting concerns
|
|
13
|
+
- **focus**: patterns, principles, maintainability
|
|
14
|
+
- **maximizes**: long-term scalability and coherence
|
|
15
|
+
|
|
16
|
+
Used to design system architecture and establish patterns that ensure maintainability.
|
|
17
|
+
`.trim(),
|
|
18
|
+
traits: [],
|
|
19
|
+
skills: {
|
|
20
|
+
dirs: [],
|
|
21
|
+
refs: [],
|
|
22
|
+
},
|
|
23
|
+
briefs: {
|
|
24
|
+
dirs: [{ uri: __dirname + '/.briefs' }],
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=getArchitectRole.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getArchitectRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/architect/getArchitectRole.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAElB,QAAA,cAAc,GAAG,cAAI,CAAC,KAAK,CAAC;IACvC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE;;;;;;;;GAQP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE,EAAE;IACV,MAAM,EAAE;QACN,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;KACT;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE,CAAC;KACxC;CACF,CAAC,CAAC"}
|
|
@@ -32,19 +32,24 @@ thought tactics; intent = be composed into other roles
|
|
|
32
32
|
brief: (0, getMechanicBrief_1.getMechanicBrief)('style.words.lowercase.md'),
|
|
33
33
|
}),
|
|
34
34
|
],
|
|
35
|
-
skills:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
35
|
+
skills: {
|
|
36
|
+
dirs: [],
|
|
37
|
+
refs: [
|
|
38
|
+
// khue primitives
|
|
39
|
+
stepDiverge_skill_1.SKILL_DIVERGE,
|
|
40
|
+
stepCluster_skill_1.SKILL_CLUSTER,
|
|
41
|
+
stepTriage_skill_1.SKILL_TRIAGE,
|
|
42
|
+
stepInstantiate_skill_1.SKILL_INSTANTIATE,
|
|
43
|
+
// know primitives
|
|
44
|
+
stepArticulate_skill_1.SKILL_ARTICULATE,
|
|
45
|
+
stepDemonstrate_skill_1.SKILL_DEMONSTRATE,
|
|
46
|
+
stepCatalogize_skill_1.SKILL_CATALOGIZE,
|
|
47
|
+
// goal primitives
|
|
48
|
+
// SKILL_INTERPRET; ask -> Focus[Goal]
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
briefs: {
|
|
52
|
+
dirs: [{ uri: __dirname + '/.briefs' }],
|
|
53
|
+
},
|
|
49
54
|
});
|
|
50
55
|
//# sourceMappingURL=getBhrainRole.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBhrainRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/bhrain/getBhrainRole.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAE1C,mEAAgE;AAChE,kFAA2E;AAC3E,kFAA2E;AAC3E,qFAA8E;AAC9E,qDAAkD;AAClD,wEAAiE;AACjE,wEAAiE;AACjE,oFAA6E;AAC7E,qEAA8D;AAEjD,QAAA,WAAW,GAAG,cAAI,CAAC,KAAK,CAAC;IACpC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE;;;;GAIP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE;QACN,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,iDAAiD;YACzD,KAAK,EAAE,IAAA,+BAAc,EAAC,cAAc,CAAC;SACtC,CAAC;QACF,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,8CAA8C;YACtD,KAAK,EAAE,IAAA,mCAAgB,EAAC,0BAA0B,CAAC;SACpD,CAAC;KACH;IACD,MAAM,EAAE;QACN,kBAAkB;
|
|
1
|
+
{"version":3,"file":"getBhrainRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/bhrain/getBhrainRole.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAE1C,mEAAgE;AAChE,kFAA2E;AAC3E,kFAA2E;AAC3E,qFAA8E;AAC9E,qDAAkD;AAClD,wEAAiE;AACjE,wEAAiE;AACjE,oFAA6E;AAC7E,qEAA8D;AAEjD,QAAA,WAAW,GAAG,cAAI,CAAC,KAAK,CAAC;IACpC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE;;;;GAIP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE;QACN,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,iDAAiD;YACzD,KAAK,EAAE,IAAA,+BAAc,EAAC,cAAc,CAAC;SACtC,CAAC;QACF,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,8CAA8C;YACtD,KAAK,EAAE,IAAA,mCAAgB,EAAC,0BAA0B,CAAC;SACpD,CAAC;KACH;IACD,MAAM,EAAE;QACN,IAAI,EAAE,EAAE;QACR,IAAI,EAAE;YACJ,kBAAkB;YAClB,iCAAa;YACb,iCAAa;YACb,+BAAY;YACZ,yCAAiB;YAEjB,kBAAkB;YAClB,uCAAgB;YAChB,yCAAiB;YACjB,uCAAgB;YAEhB,kBAAkB;YAClB,sCAAsC;SACvC;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE,CAAC;KACxC;CACF,CAAC,CAAC"}
|
|
@@ -19,12 +19,17 @@ Used to understand the physics, incentives, and causal flows beneath the system.
|
|
|
19
19
|
|
|
20
20
|
`.trim(),
|
|
21
21
|
traits: [],
|
|
22
|
-
skills:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
skills: {
|
|
23
|
+
dirs: [],
|
|
24
|
+
refs: [
|
|
25
|
+
// SKILL_ENVISION_JOURNEY,
|
|
26
|
+
// SKILL_STUDY_DOMAIN,
|
|
27
|
+
// SKILL_DOMAIN_TERM_COLLECT_USECASES,
|
|
28
|
+
// SKILL_DOMAIN_TERM_DISTILL,
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
briefs: {
|
|
32
|
+
dirs: [{ uri: __dirname + '/.briefs' }],
|
|
33
|
+
},
|
|
29
34
|
});
|
|
30
35
|
//# sourceMappingURL=getEcologistRole.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getEcologistRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/ecologist/getEcologistRole.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAE/B,kEAAkE;AAErD,QAAA,cAAc,GAAG,cAAI,CAAC,KAAK,CAAC;IACvC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE;;;;;;;;;;GAUP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE,EAAE;IACV,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"getEcologistRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/ecologist/getEcologistRole.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAE/B,kEAAkE;AAErD,QAAA,cAAc,GAAG,cAAI,CAAC,KAAK,CAAC;IACvC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE;;;;;;;;;;GAUP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE,EAAE;IACV,MAAM,EAAE;QACN,IAAI,EAAE,EAAE;QACR,IAAI,EAAE;QACJ,0BAA0B;QAC1B,sBAAsB;QACtB,sCAAsC;QACtC,6BAA6B;SAC9B;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE,CAAC;KACxC;CACF,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getRoleRegistry = void 0;
|
|
4
4
|
const rhachet_1 = require("rhachet");
|
|
5
|
+
const getArchitectRole_1 = require("./architect/getArchitectRole");
|
|
5
6
|
const getBhrainRole_1 = require("./bhrain/getBhrainRole");
|
|
6
7
|
// import { ROLE_ECOLOGIST } from './ecologist/getEcologistRole';
|
|
7
8
|
const getRoleRegistry_readme_1 = require("./getRoleRegistry.readme");
|
|
@@ -19,6 +20,7 @@ const getRoleRegistry = () => new rhachet_1.RoleRegistry({
|
|
|
19
20
|
roles: [
|
|
20
21
|
getBhrainRole_1.ROLE_BHRAIN, // todo: lift bhrain role into own repo
|
|
21
22
|
// ROLE_ECOLOGIST,
|
|
23
|
+
getArchitectRole_1.ROLE_ARCHITECT,
|
|
22
24
|
getMechanicRole_1.ROLE_MECHANIC,
|
|
23
25
|
getCommanderRole_1.ROLE_COMMANDER,
|
|
24
26
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRoleRegistry.js","sourceRoot":"","sources":["../../../src/logic/roles/getRoleRegistry.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,0DAAqD;AACrD,iEAAiE;AACjE,qEAAoE;AACpE,gEAA2D;AAC3D,4EAAuE;AAEvE;;;;;GAKG;AACI,MAAM,eAAe,GAAG,GAAiB,EAAE,CAChD,IAAI,sBAAY,CAAC;IACf,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,iDAAwB;IAChC,KAAK,EAAE;QACL,2BAAW,EAAE,uCAAuC;QACpD,kBAAkB;QAClB,+BAAa;QAEb,iCAAc;KACf;CACF,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"getRoleRegistry.js","sourceRoot":"","sources":["../../../src/logic/roles/getRoleRegistry.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,mEAA8D;AAC9D,0DAAqD;AACrD,iEAAiE;AACjE,qEAAoE;AACpE,gEAA2D;AAC3D,4EAAuE;AAEvE;;;;;GAKG;AACI,MAAM,eAAe,GAAG,GAAiB,EAAE,CAChD,IAAI,sBAAY,CAAC;IACf,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,iDAAwB;IAChC,KAAK,EAAE;QACL,2BAAW,EAAE,uCAAuC;QACpD,kBAAkB;QAClB,iCAAc;QACd,+BAAa;QAEb,iCAAc;KACf;CACF,CAAC,CAAC;AAZQ,QAAA,eAAe,mBAYvB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
prefer the inclusion of emojis in comments and logs, to make things easier to grok
|
|
2
|
+
|
|
3
|
+
prefer chill, nature based emojis, to give a zen vibe
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
careful not to do emojis - and try and reuse emojis based on similarities
|
|
8
|
+
|
|
9
|
+
ideally, no more than 5-7 different emojis would be present at a time, and typically, only for imporant callouts
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
otherwise, use neutral and chill unicode characters for bulletpoints and etc
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
e.g.,
|
|
19
|
+
|
|
20
|
+
⛈️ = error
|
|
21
|
+
🔭 = lookup
|
|
22
|
+
✨ = success
|
|
23
|
+
🌿 = output
|
|
24
|
+
🌊 = outcome
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# given
|
|
2
|
+
|
|
3
|
+
you are in a .shell env
|
|
4
|
+
|
|
5
|
+
# what
|
|
6
|
+
|
|
7
|
+
prefer `jq` over escape to other languages, like python
|
|
8
|
+
|
|
9
|
+
# demo
|
|
10
|
+
|
|
11
|
+
### bad practice
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
local instance_id
|
|
15
|
+
instance_id=$(echo "$instance_json" | python3 -c "
|
|
16
|
+
import sys, json
|
|
17
|
+
data = json.load(sys.stdin)
|
|
18
|
+
if data and data != 'None':
|
|
19
|
+
print(data.get('InstanceId', ''))
|
|
20
|
+
" 2>/dev/null)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### best practice
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
local instance_id
|
|
28
|
+
instance_id=$(echo "$instance_json" | jq -r '.InstanceId // empty' 2>/dev/null)
|
|
29
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.what = use terraform rather than adhoc .shell commands to manage infra
|
|
2
|
+
|
|
3
|
+
.why =
|
|
4
|
+
- terraform is declarative
|
|
5
|
+
- enables you to declare desires and compare reality
|
|
6
|
+
- simpler to review for issues, since you see the final product explicitly in code
|
|
7
|
+
- simpler to review for issues, since you see divergence with reality
|
|
8
|
+
- enables drift detection
|
|
9
|
+
- more
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
if your goal is to change infra (add resources, del resources, set resources) => use terraform
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
note = code.actors make it very easy to sync terraform state && go from wish => critera => done
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
idempotency is a must
|
|
2
|
+
|
|
3
|
+
we must always assume that retries will occur
|
|
4
|
+
- user will forget if they ran it or not
|
|
5
|
+
- code will compose dependent flows that may need to repeat operations safely
|
|
6
|
+
- apps will face network errors and retry requests
|
|
7
|
+
|
|
8
|
+
idempotency means that the same request duplicated will succeed as if it only ran once
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
the main methods of doing so are via
|
|
13
|
+
|
|
14
|
+
- findsert = find or insert
|
|
15
|
+
- const before = dao.findByRef()
|
|
16
|
+
- if (before && nonDiff) return before
|
|
17
|
+
- if (before && hasDiff) BadRequestError.throw('can not findsert; entity already exists but with different attributes')
|
|
18
|
+
- const after = dao.upsert()
|
|
19
|
+
- return after
|
|
20
|
+
|
|
21
|
+
- upsert = update or insert
|
|
22
|
+
- this is a standard operation often handled at the database layer
|
|
23
|
+
- simply always overwrite, idempotently
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
why are these the two main modes?
|
|
28
|
+
|
|
29
|
+
because otherwise the only other option is to throw an error on duplicate requests
|
|
30
|
+
|
|
31
|
+
there are fundamentally no other ways to support idempotency
|
|
32
|
+
- if it doesn't exist, great -> insert
|
|
33
|
+
- if it does exist, decide -> update (upsert) or retain (findsert)
|
|
@@ -18,7 +18,12 @@ exports.ROLE_MECHANIC = rhachet_1.Role.build({
|
|
|
18
18
|
Used to write and revise the actual logic that runs the system.
|
|
19
19
|
`.trim(),
|
|
20
20
|
traits: [],
|
|
21
|
-
skills:
|
|
22
|
-
|
|
21
|
+
skills: {
|
|
22
|
+
dirs: [],
|
|
23
|
+
refs: [loopWrite_skill_1.SKILL_WRITE, getSkillCodePropose_1.SKILL_CODE_PROPOSE],
|
|
24
|
+
},
|
|
25
|
+
briefs: {
|
|
26
|
+
dirs: [{ uri: __dirname + '/.briefs' }],
|
|
27
|
+
},
|
|
23
28
|
});
|
|
24
29
|
//# sourceMappingURL=getMechanicRole.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMechanicRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/mechanic/getMechanicRole.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAE/B,sEAAkE;AAClE,6DAAsD;AAEzC,QAAA,aAAa,GAAG,cAAI,CAAC,KAAK,CAAC;IACtC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE;;;;;;;;GAQP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,CAAC,6BAAW,EAAE,wCAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"getMechanicRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/mechanic/getMechanicRole.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAE/B,sEAAkE;AAClE,6DAAsD;AAEzC,QAAA,aAAa,GAAG,cAAI,CAAC,KAAK,CAAC;IACtC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE;;;;;;;;GAQP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE,EAAE;IACV,MAAM,EAAE;QACN,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,CAAC,6BAAW,EAAE,wCAAkB,CAAC;KACxC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE,CAAC;KACxC;CACF,CAAC,CAAC"}
|
|
@@ -30,7 +30,12 @@ a helpful terminal commander, at your service
|
|
|
30
30
|
brief: (0, getMechanicBrief_1.getMechanicBrief)('style.words.lowercase.md'),
|
|
31
31
|
}),
|
|
32
32
|
],
|
|
33
|
-
skills:
|
|
34
|
-
|
|
33
|
+
skills: {
|
|
34
|
+
dirs: [],
|
|
35
|
+
refs: [stepPlanCommand_skill_1.SKILL_COMMAND_PLAN, stepExecCommand_skill_1.SKILL_COMMAND_EXEC],
|
|
36
|
+
},
|
|
37
|
+
briefs: {
|
|
38
|
+
dirs: [{ uri: __dirname + '/.briefs' }],
|
|
39
|
+
},
|
|
35
40
|
});
|
|
36
41
|
//# sourceMappingURL=getCommanderRole.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCommanderRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/terminal.commander/getCommanderRole.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAE1C,6DAA0D;AAC1D,mEAAgE;AAChE,gFAA0E;AAC1E,gFAA0E;AAE7D,QAAA,cAAc,GAAG,cAAI,CAAC,KAAK,CAAC;IACvC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,sBAAsB;IAC/B,MAAM,EAAE;;;;;;;GAOP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE;QACN,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,iDAAiD;YACzD,KAAK,EAAE,IAAA,+BAAc,EAAC,cAAc,CAAC;SACtC,CAAC;QACF,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,8CAA8C;YACtD,KAAK,EAAE,IAAA,mCAAgB,EAAC,0BAA0B,CAAC;SACpD,CAAC;KACH;IACD,MAAM,EAAE,CAAC,0CAAkB,EAAE,0CAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"getCommanderRole.js","sourceRoot":"","sources":["../../../../src/logic/roles/terminal.commander/getCommanderRole.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAE1C,6DAA0D;AAC1D,mEAAgE;AAChE,gFAA0E;AAC1E,gFAA0E;AAE7D,QAAA,cAAc,GAAG,cAAI,CAAC,KAAK,CAAC;IACvC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,sBAAsB;IAC/B,MAAM,EAAE;;;;;;;GAOP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE;QACN,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,iDAAiD;YACzD,KAAK,EAAE,IAAA,+BAAc,EAAC,cAAc,CAAC;SACtC,CAAC;QACF,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,8CAA8C;YACtD,KAAK,EAAE,IAAA,mCAAgB,EAAC,0BAA0B,CAAC;SACpD,CAAC;KACH;IACD,MAAM,EAAE;QACN,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,CAAC,0CAAkB,EAAE,0CAAkB,CAAC;KAC/C;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE,CAAC;KACxC;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "rhachet-roles-ehmpathy",
|
|
3
3
|
"author": "ehmpathy",
|
|
4
4
|
"description": "empathetic software construction roles and skills, via rhachet",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.8.0",
|
|
6
6
|
"repository": "ehmpathy/rhachet-roles-ehmpathy",
|
|
7
7
|
"homepage": "https://github.com/ehmpathy/rhachet-roles-ehmpathy",
|
|
8
8
|
"keywords": [
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"helpful-errors": "1.3.8",
|
|
58
58
|
"inquirer": "12.7.0",
|
|
59
59
|
"openai": "5.8.2",
|
|
60
|
-
"rhachet": "1.
|
|
60
|
+
"rhachet": "1.11.0",
|
|
61
61
|
"rhachet-artifact": "1.0.0",
|
|
62
62
|
"rhachet-artifact-git": "1.1.0",
|
|
63
63
|
"serde-fns": "1.2.0",
|