@medicine-wheel/creative-orientation 0.5.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/README.md +89 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +138 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
package/README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# @medicine-wheel/creative-orientation
|
|
2
|
+
|
|
3
|
+
Which orientation does this situation call for?
|
|
4
|
+
|
|
5
|
+
> [!WARNING]
|
|
6
|
+
> **Experimental alpha.** Part of the Medicine Wheel Developer Suite, which is
|
|
7
|
+
> under active development. APIs change between patch versions and all packages
|
|
8
|
+
> move in lockstep — pin exact versions. See
|
|
9
|
+
> [ALPHA.md](https://github.com/jgwill/medicine-wheel/blob/main/ALPHA.md).
|
|
10
|
+
|
|
11
|
+
## Why it exists
|
|
12
|
+
|
|
13
|
+
Problem-solving is not the degraded case. It is the **correct** case for a
|
|
14
|
+
specific situation: something worked, it stopped working, restore it. Creating
|
|
15
|
+
is correct for a different one: bring into being a state that has never
|
|
16
|
+
existed.
|
|
17
|
+
|
|
18
|
+
They produce different structures. Problem-solving oscillates back to a
|
|
19
|
+
baseline — which is exactly right when you are below the baseline. Creating
|
|
20
|
+
advances toward an outcome. Using the wrong one is how rigorous work goes in
|
|
21
|
+
circles: chart an oscillating goal and you build a very careful machine for
|
|
22
|
+
returning to where you started.
|
|
23
|
+
|
|
24
|
+
This package answers the routing question and nothing else.
|
|
25
|
+
|
|
26
|
+
## The discriminator
|
|
27
|
+
|
|
28
|
+
A feeling of urgency is not evidence. Under pressure every situation feels like
|
|
29
|
+
a fire. One question separates them:
|
|
30
|
+
|
|
31
|
+
> **Is there a prior state you are restoring?**
|
|
32
|
+
|
|
33
|
+
If you can name it and it genuinely existed — fire. Gap analysis is the right
|
|
34
|
+
instrument. If you cannot, you are creating, and difference-closing language
|
|
35
|
+
will mislead you, because there is no baseline to close toward.
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { readOrientation, worthSaying } from '@medicine-wheel/creative-orientation';
|
|
41
|
+
|
|
42
|
+
const reading = readOrientation({
|
|
43
|
+
outcome: 'catch cross-service contract breaks',
|
|
44
|
+
restores: null,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
reading.orientation; // 'advancing'
|
|
48
|
+
reading.route; // 'structural-tension'
|
|
49
|
+
worthSaying(reading); // true — the phrasing and the situation disagree
|
|
50
|
+
reading.advice;
|
|
51
|
+
// "This outcome is phrased as removing something, but nothing is being
|
|
52
|
+
// restored. Elimination framing here optimises against a list of known
|
|
53
|
+
// failures rather than toward the state you actually want."
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The baseline claim decides the route. Vocabulary only ever contributes signals,
|
|
57
|
+
because `reduce latency` is a correct outcome during an incident and a symptom
|
|
58
|
+
worth surfacing as a product vision. A blocklist would be wrong in precisely
|
|
59
|
+
the situation where that vocabulary is right.
|
|
60
|
+
|
|
61
|
+
## It advises; it does not refuse
|
|
62
|
+
|
|
63
|
+
Nothing here blocks a caller. A package that refuses is a package people learn
|
|
64
|
+
to route around, and routing around it teaches nothing. The reading is
|
|
65
|
+
returned, the disagreement is named, and the caller proceeds — because
|
|
66
|
+
sometimes the caller knows something the check does not.
|
|
67
|
+
|
|
68
|
+
## Where it sits
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
creative-orientation ......... the gate
|
|
72
|
+
├── gap-analysis ......... the fire path
|
|
73
|
+
└── structural-tension ... the advancing path
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`@medicine-wheel/brainstorming` calls this on every outcome statement it emits,
|
|
77
|
+
including its own questions. That is the load-bearing use: an elimination-shaped
|
|
78
|
+
option label, once selected by a human, stops looking like an agent's bias and
|
|
79
|
+
starts looking like a requirement.
|
|
80
|
+
|
|
81
|
+
## Status
|
|
82
|
+
|
|
83
|
+
First release. The surface is small on purpose — the judgement of whether a
|
|
84
|
+
claimed baseline is *real* stays with a person, and everything around that
|
|
85
|
+
socket is deterministic so it can be tested and cannot be forgotten under load.
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @medicine-wheel/creative-orientation
|
|
3
|
+
*
|
|
4
|
+
* Which orientation does this situation call for?
|
|
5
|
+
*
|
|
6
|
+
* Problem-solving is not the degraded case. It is the correct case for a
|
|
7
|
+
* specific situation: something worked, it stopped working, restore it.
|
|
8
|
+
* Creating is the correct case for a different one: bring into being a state
|
|
9
|
+
* that has never existed. They produce different structures — one oscillates
|
|
10
|
+
* back to a baseline, one advances toward an outcome — and using the wrong
|
|
11
|
+
* one is how rigorous work goes in circles.
|
|
12
|
+
*
|
|
13
|
+
* This module answers the routing question and nothing else. It does not
|
|
14
|
+
* decide, it does not block. A caller that disagrees proceeds, because
|
|
15
|
+
* sometimes the caller knows something the check does not.
|
|
16
|
+
*
|
|
17
|
+
* @packageDocumentation
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* The one question that separates the two orientations.
|
|
21
|
+
*
|
|
22
|
+
* A feeling of urgency is not evidence — under pressure everything feels like
|
|
23
|
+
* a fire. What distinguishes them is whether there is a prior state you are
|
|
24
|
+
* returning to. If you can name it and it genuinely existed, the situation is
|
|
25
|
+
* a fire. If you cannot, you are creating, and difference-closing language
|
|
26
|
+
* will mislead you because there is no baseline to close toward.
|
|
27
|
+
*/
|
|
28
|
+
export interface SituationClaim {
|
|
29
|
+
/** What the caller wants. */
|
|
30
|
+
outcome: string;
|
|
31
|
+
/**
|
|
32
|
+
* The prior state being restored, if any. A string means the caller claims
|
|
33
|
+
* one existed; `null` means they claim none did.
|
|
34
|
+
*/
|
|
35
|
+
restores: string | null;
|
|
36
|
+
/** Optional evidence that the claimed prior state was real. */
|
|
37
|
+
evidence?: string;
|
|
38
|
+
}
|
|
39
|
+
export type Orientation = 'advancing' | 'oscillating' | 'ambiguous';
|
|
40
|
+
export type Route = 'gap-analysis' | 'structural-tension';
|
|
41
|
+
export interface OrientationSignal {
|
|
42
|
+
kind: 'vocabulary' | 'baseline' | 'outcome-shape';
|
|
43
|
+
detail: string;
|
|
44
|
+
/** Which orientation this signal points toward. */
|
|
45
|
+
suggests: Orientation;
|
|
46
|
+
}
|
|
47
|
+
export interface OrientationReading {
|
|
48
|
+
orientation: Orientation;
|
|
49
|
+
/** Where this situation should be taken next. */
|
|
50
|
+
route: Route;
|
|
51
|
+
signals: OrientationSignal[];
|
|
52
|
+
/**
|
|
53
|
+
* Present when the reading disagrees with how the outcome was phrased.
|
|
54
|
+
* Advisory — never a refusal.
|
|
55
|
+
*/
|
|
56
|
+
advice?: string;
|
|
57
|
+
/** The outcome restated in advancing form, when that is what is called for. */
|
|
58
|
+
suggestedOutcome?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Words that describe the removal of something unwanted rather than the
|
|
62
|
+
* presence of something wanted.
|
|
63
|
+
*
|
|
64
|
+
* These are **evidence, not verdicts**. "Reduce latency" is a correct outcome
|
|
65
|
+
* when the forest is on fire. The same phrase as a product vision is a symptom
|
|
66
|
+
* worth surfacing. A blocklist would be wrong in exactly the situation where
|
|
67
|
+
* this vocabulary is right.
|
|
68
|
+
*/
|
|
69
|
+
export declare const ELIMINATION_MARKERS: readonly ["avoid", "prevent", "reduce", "eliminate", "stop", "fix", "catch", "remove", "minimize", "minimise", "mitigate", "resolve the problem", "get rid of", "bridge the gap", "close the gap", "gap between"];
|
|
70
|
+
/** Words that describe a state coming into being. */
|
|
71
|
+
export declare const ADVANCING_MARKERS: readonly ["bring into being", "establish", "create", "arrives", "exists", "becomes", "holds", "carries", "is able to", "can now"];
|
|
72
|
+
/**
|
|
73
|
+
* Read a situation and say which orientation it calls for.
|
|
74
|
+
*
|
|
75
|
+
* The baseline claim decides the route; vocabulary only ever contributes
|
|
76
|
+
* signals. A caller who names a real prior state gets routed to gap analysis
|
|
77
|
+
* even if they phrased the outcome beautifully — and a caller who names none
|
|
78
|
+
* gets routed to structural tension even if every word they used was
|
|
79
|
+
* elimination-shaped.
|
|
80
|
+
*/
|
|
81
|
+
export declare function readOrientation(claim: SituationClaim): OrientationReading;
|
|
82
|
+
/**
|
|
83
|
+
* Restate an elimination-shaped outcome as a desired state.
|
|
84
|
+
*
|
|
85
|
+
* Deliberately mechanical and deliberately incomplete: it produces a prompt for
|
|
86
|
+
* a human or agent to finish, not a finished sentence. A confident rewrite here
|
|
87
|
+
* would be a machine deciding what someone wants.
|
|
88
|
+
*/
|
|
89
|
+
export declare function reorient(outcome: string): string;
|
|
90
|
+
/** Convenience: the route alone, for callers that only need to dispatch. */
|
|
91
|
+
export declare function routeFor(claim: SituationClaim): Route;
|
|
92
|
+
/**
|
|
93
|
+
* Does this reading warrant interrupting the caller?
|
|
94
|
+
*
|
|
95
|
+
* True only when the orientation and the phrasing disagree. Advice on a
|
|
96
|
+
* situation the caller already framed correctly is noise, and noise is how
|
|
97
|
+
* checks get switched off.
|
|
98
|
+
*/
|
|
99
|
+
export declare function worthSaying(reading: OrientationReading): boolean;
|
|
100
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC;AAEpE,MAAM,MAAM,KAAK,GAAG,cAAc,GAAG,oBAAoB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,eAAe,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,iDAAiD;IACjD,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,mNAItB,CAAC;AAEX,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,mIAGpB,CAAC;AAYX;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,CAwDzE;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAEhE"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @medicine-wheel/creative-orientation
|
|
4
|
+
*
|
|
5
|
+
* Which orientation does this situation call for?
|
|
6
|
+
*
|
|
7
|
+
* Problem-solving is not the degraded case. It is the correct case for a
|
|
8
|
+
* specific situation: something worked, it stopped working, restore it.
|
|
9
|
+
* Creating is the correct case for a different one: bring into being a state
|
|
10
|
+
* that has never existed. They produce different structures — one oscillates
|
|
11
|
+
* back to a baseline, one advances toward an outcome — and using the wrong
|
|
12
|
+
* one is how rigorous work goes in circles.
|
|
13
|
+
*
|
|
14
|
+
* This module answers the routing question and nothing else. It does not
|
|
15
|
+
* decide, it does not block. A caller that disagrees proceeds, because
|
|
16
|
+
* sometimes the caller knows something the check does not.
|
|
17
|
+
*
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.ADVANCING_MARKERS = exports.ELIMINATION_MARKERS = void 0;
|
|
22
|
+
exports.readOrientation = readOrientation;
|
|
23
|
+
exports.reorient = reorient;
|
|
24
|
+
exports.routeFor = routeFor;
|
|
25
|
+
exports.worthSaying = worthSaying;
|
|
26
|
+
// ─── Vocabulary ───────────────────────────────────────────────────
|
|
27
|
+
/**
|
|
28
|
+
* Words that describe the removal of something unwanted rather than the
|
|
29
|
+
* presence of something wanted.
|
|
30
|
+
*
|
|
31
|
+
* These are **evidence, not verdicts**. "Reduce latency" is a correct outcome
|
|
32
|
+
* when the forest is on fire. The same phrase as a product vision is a symptom
|
|
33
|
+
* worth surfacing. A blocklist would be wrong in exactly the situation where
|
|
34
|
+
* this vocabulary is right.
|
|
35
|
+
*/
|
|
36
|
+
exports.ELIMINATION_MARKERS = [
|
|
37
|
+
'avoid', 'prevent', 'reduce', 'eliminate', 'stop', 'fix', 'catch',
|
|
38
|
+
'remove', 'minimize', 'minimise', 'mitigate', 'resolve the problem',
|
|
39
|
+
'get rid of', 'bridge the gap', 'close the gap', 'gap between',
|
|
40
|
+
];
|
|
41
|
+
/** Words that describe a state coming into being. */
|
|
42
|
+
exports.ADVANCING_MARKERS = [
|
|
43
|
+
'bring into being', 'establish', 'create', 'arrives', 'exists',
|
|
44
|
+
'becomes', 'holds', 'carries', 'is able to', 'can now',
|
|
45
|
+
];
|
|
46
|
+
const WORD_BOUNDARY = /[^a-z]+/;
|
|
47
|
+
function mentions(haystack, needle) {
|
|
48
|
+
const text = haystack.toLowerCase();
|
|
49
|
+
if (needle.includes(' '))
|
|
50
|
+
return text.includes(needle);
|
|
51
|
+
return text.split(WORD_BOUNDARY).includes(needle);
|
|
52
|
+
}
|
|
53
|
+
// ─── Reading a situation ──────────────────────────────────────────
|
|
54
|
+
/**
|
|
55
|
+
* Read a situation and say which orientation it calls for.
|
|
56
|
+
*
|
|
57
|
+
* The baseline claim decides the route; vocabulary only ever contributes
|
|
58
|
+
* signals. A caller who names a real prior state gets routed to gap analysis
|
|
59
|
+
* even if they phrased the outcome beautifully — and a caller who names none
|
|
60
|
+
* gets routed to structural tension even if every word they used was
|
|
61
|
+
* elimination-shaped.
|
|
62
|
+
*/
|
|
63
|
+
function readOrientation(claim) {
|
|
64
|
+
const signals = [];
|
|
65
|
+
const eliminationHits = exports.ELIMINATION_MARKERS.filter(m => mentions(claim.outcome, m));
|
|
66
|
+
for (const hit of eliminationHits) {
|
|
67
|
+
signals.push({
|
|
68
|
+
kind: 'vocabulary',
|
|
69
|
+
detail: `"${hit}" in outcome position describes removing something, not a state that exists`,
|
|
70
|
+
suggests: 'oscillating',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const advancingHits = exports.ADVANCING_MARKERS.filter(m => mentions(claim.outcome, m));
|
|
74
|
+
for (const hit of advancingHits) {
|
|
75
|
+
signals.push({
|
|
76
|
+
kind: 'vocabulary',
|
|
77
|
+
detail: `"${hit}" names a state coming into being`,
|
|
78
|
+
suggests: 'advancing',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
const hasBaseline = typeof claim.restores === 'string' && claim.restores.trim().length > 0;
|
|
82
|
+
signals.push(hasBaseline
|
|
83
|
+
? {
|
|
84
|
+
kind: 'baseline',
|
|
85
|
+
detail: `a prior state is claimed: ${claim.restores}${claim.evidence ? ` (evidence: ${claim.evidence})` : ' — no evidence given'}`,
|
|
86
|
+
suggests: 'oscillating',
|
|
87
|
+
}
|
|
88
|
+
: {
|
|
89
|
+
kind: 'baseline',
|
|
90
|
+
detail: 'no prior state is being restored — there is no baseline to close toward',
|
|
91
|
+
suggests: 'advancing',
|
|
92
|
+
});
|
|
93
|
+
const orientation = hasBaseline ? 'oscillating' : 'advancing';
|
|
94
|
+
const route = hasBaseline ? 'gap-analysis' : 'structural-tension';
|
|
95
|
+
const reading = { orientation, route, signals };
|
|
96
|
+
// The two disagreements worth surfacing.
|
|
97
|
+
if (!hasBaseline && eliminationHits.length > 0) {
|
|
98
|
+
reading.advice =
|
|
99
|
+
'This outcome is phrased as removing something, but nothing is being restored. ' +
|
|
100
|
+
'Elimination framing here optimises against a list of known failures rather than ' +
|
|
101
|
+
'toward the state you actually want. Restate it as the state that will exist.';
|
|
102
|
+
reading.suggestedOutcome = reorient(claim.outcome);
|
|
103
|
+
}
|
|
104
|
+
else if (hasBaseline && !claim.evidence) {
|
|
105
|
+
reading.advice =
|
|
106
|
+
'A prior state is claimed but not evidenced. Under pressure every situation feels ' +
|
|
107
|
+
'like a fire. Name when this state existed, or the routing rests on a feeling.';
|
|
108
|
+
}
|
|
109
|
+
return reading;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Restate an elimination-shaped outcome as a desired state.
|
|
113
|
+
*
|
|
114
|
+
* Deliberately mechanical and deliberately incomplete: it produces a prompt for
|
|
115
|
+
* a human or agent to finish, not a finished sentence. A confident rewrite here
|
|
116
|
+
* would be a machine deciding what someone wants.
|
|
117
|
+
*/
|
|
118
|
+
function reorient(outcome) {
|
|
119
|
+
const hit = exports.ELIMINATION_MARKERS.find(m => mentions(outcome, m));
|
|
120
|
+
if (!hit)
|
|
121
|
+
return outcome;
|
|
122
|
+
return `[restate without "${hit}"] What state exists once this is true? — ${outcome}`;
|
|
123
|
+
}
|
|
124
|
+
/** Convenience: the route alone, for callers that only need to dispatch. */
|
|
125
|
+
function routeFor(claim) {
|
|
126
|
+
return readOrientation(claim).route;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Does this reading warrant interrupting the caller?
|
|
130
|
+
*
|
|
131
|
+
* True only when the orientation and the phrasing disagree. Advice on a
|
|
132
|
+
* situation the caller already framed correctly is noise, and noise is how
|
|
133
|
+
* checks get switched off.
|
|
134
|
+
*/
|
|
135
|
+
function worthSaying(reading) {
|
|
136
|
+
return typeof reading.advice === 'string';
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@medicine-wheel/creative-orientation",
|
|
3
|
+
"version": "0.5.3",
|
|
4
|
+
"description": "Which orientation a situation calls for — advancing toward a state that has never existed, or restoring one that did. Routes to structural tension or to gap analysis.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"sideEffects": false,
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"clean": "rm -rf dist",
|
|
23
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"medicine-wheel",
|
|
27
|
+
"creative-orientation",
|
|
28
|
+
"structural-tension",
|
|
29
|
+
"robert-fritz",
|
|
30
|
+
"advancing",
|
|
31
|
+
"oscillating"
|
|
32
|
+
],
|
|
33
|
+
"author": "jgwill",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "git+https://github.com/jgwill/medicine-wheel.git",
|
|
38
|
+
"directory": "src/creative-orientation"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"typescript": "^5.7.0"
|
|
42
|
+
}
|
|
43
|
+
}
|