@m14i/sith 1.8.0 → 1.9.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/index.js +65136 -53727
- package/dist/package.json +1 -1
- package/dist/package1.json +137 -0
- package/docker/Dockerfile +14 -10
- package/docker/nix/flake.lock +61 -0
- package/docker/nix/flake.nix +56 -0
- package/package.json +4 -2
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"
|
|
1
|
+
{"name":"@m14i/sith","version":"1.9.0","description":"Turn your context to the dark side. Standardize and share your OpenCode setup with a fully dockerized environment, designed for seamless collaboration and CI integration.","type":"module","repository":{"type":"git","url":"https://github.com/MerzoukeMansouri/sith.git"},"bin":{"sith":"./dist/index.js"},"scripts":{"build":"ncc build src/index.ts -o dist && rm -rf dist/assets && cp -r assets dist/","dev":"tsx src/index.ts","dev:build":"pnpm build && node dist/index.js","dev:shell":"pnpm build && node dist/index.js shell","typecheck":"tsc --noEmit","clean":"rm -rf dist","prepublishOnly":"pnpm build"},"files":["dist","assets","docker"],"keywords":["opencode","docker","ci","automation","cli","nix"],"author":"","license":"MIT","dependencies":{"@inquirer/prompts":"^5.0.0","chalk":"^5.3.0","commander":"^12.1.0","execa":"^9.0.0","ink":"^7.0.3","react":"^19.2.6","update-notifier":"^7.3.1"},"devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.1","@semantic-release/npm":"^12.0.1","@types/node":"^20.12.7","@types/react":"^19.2.14","@types/update-notifier":"^6.0.8","@vercel/ncc":"^0.38.1","semantic-release":"^24.2.0","tsx":"^4.7.2","typescript":"^5.4.5"},"engines":{"node":">=18"}}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ink",
|
|
3
|
+
"version": "7.0.3",
|
|
4
|
+
"description": "React for CLI",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": "vadimdemedes/ink",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Vadim Demedes",
|
|
9
|
+
"email": "vadimdemedes@hey.com",
|
|
10
|
+
"url": "https://github.com/vadimdemedes"
|
|
11
|
+
},
|
|
12
|
+
"type": "module",
|
|
13
|
+
"exports": {
|
|
14
|
+
"types": "./build/index.d.ts",
|
|
15
|
+
"default": "./build/index.js"
|
|
16
|
+
},
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=22"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"dev": "tsc --watch",
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"prepare": "npm run build",
|
|
24
|
+
"test": "npm run typecheck && npm run lint && FORCE_COLOR=true ava",
|
|
25
|
+
"lint": "xo",
|
|
26
|
+
"format": "prettier --write .",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"example": "NODE_NO_WARNINGS=1 node --import=tsx",
|
|
29
|
+
"benchmark": "NODE_NO_WARNINGS=1 node --import=tsx",
|
|
30
|
+
"inspect": "react-devtools"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"build"
|
|
34
|
+
],
|
|
35
|
+
"keywords": [
|
|
36
|
+
"react",
|
|
37
|
+
"cli",
|
|
38
|
+
"jsx",
|
|
39
|
+
"stdout",
|
|
40
|
+
"components",
|
|
41
|
+
"command-line",
|
|
42
|
+
"preact",
|
|
43
|
+
"redux",
|
|
44
|
+
"print",
|
|
45
|
+
"render",
|
|
46
|
+
"colors",
|
|
47
|
+
"text"
|
|
48
|
+
],
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@alcalzone/ansi-tokenize": "^0.3.0",
|
|
51
|
+
"ansi-escapes": "^7.3.0",
|
|
52
|
+
"ansi-styles": "^6.2.3",
|
|
53
|
+
"auto-bind": "^5.0.1",
|
|
54
|
+
"chalk": "^5.6.2",
|
|
55
|
+
"cli-boxes": "^4.0.1",
|
|
56
|
+
"cli-cursor": "^4.0.0",
|
|
57
|
+
"cli-truncate": "^6.0.0",
|
|
58
|
+
"code-excerpt": "^4.0.0",
|
|
59
|
+
"es-toolkit": "^1.45.1",
|
|
60
|
+
"indent-string": "^5.0.0",
|
|
61
|
+
"is-in-ci": "^2.0.0",
|
|
62
|
+
"patch-console": "^2.0.0",
|
|
63
|
+
"react-reconciler": "^0.33.0",
|
|
64
|
+
"scheduler": "^0.27.0",
|
|
65
|
+
"signal-exit": "^3.0.7",
|
|
66
|
+
"slice-ansi": "^9.0.0",
|
|
67
|
+
"stack-utils": "^2.0.6",
|
|
68
|
+
"string-width": "^8.2.0",
|
|
69
|
+
"terminal-size": "^4.0.1",
|
|
70
|
+
"type-fest": "^5.5.0",
|
|
71
|
+
"widest-line": "^6.0.0",
|
|
72
|
+
"wrap-ansi": "^10.0.0",
|
|
73
|
+
"ws": "^8.20.0",
|
|
74
|
+
"yoga-layout": "~3.2.1"
|
|
75
|
+
},
|
|
76
|
+
"devDependencies": {
|
|
77
|
+
"@faker-js/faker": "^10.4.0",
|
|
78
|
+
"@sindresorhus/tsconfig": "^8.1.0",
|
|
79
|
+
"@sinonjs/fake-timers": "^15.3.0",
|
|
80
|
+
"@types/ms": "^2.1.0",
|
|
81
|
+
"@types/node": "^25.5.2",
|
|
82
|
+
"@types/react": "^19.2.14",
|
|
83
|
+
"@types/react-reconciler": "^0.33.0",
|
|
84
|
+
"@types/scheduler": "^0.26.0",
|
|
85
|
+
"@types/signal-exit": "^3.0.0",
|
|
86
|
+
"@types/sinon": "^21.0.1",
|
|
87
|
+
"@types/stack-utils": "^2.0.3",
|
|
88
|
+
"@types/ws": "^8.18.1",
|
|
89
|
+
"@vdemedes/prettier-config": "^2.0.1",
|
|
90
|
+
"ava": "^7.0.0",
|
|
91
|
+
"boxen": "^8.0.1",
|
|
92
|
+
"delay": "^7.0.0",
|
|
93
|
+
"ms": "^2.1.3",
|
|
94
|
+
"node-pty": "^1.2.0-beta.12",
|
|
95
|
+
"p-queue": "^9.1.2",
|
|
96
|
+
"prettier": "^3.8.1",
|
|
97
|
+
"react": "^19.2.4",
|
|
98
|
+
"react-devtools": "^7.0.1",
|
|
99
|
+
"react-devtools-core": "^7.0.1",
|
|
100
|
+
"react-router": "^7.14.0",
|
|
101
|
+
"sinon": "^21.0.3",
|
|
102
|
+
"strip-ansi": "^7.2.0",
|
|
103
|
+
"tsx": "^4.21.0",
|
|
104
|
+
"typescript": "^5.8.3",
|
|
105
|
+
"xo": "^1.2.3"
|
|
106
|
+
},
|
|
107
|
+
"peerDependencies": {
|
|
108
|
+
"@types/react": ">=19.2.0",
|
|
109
|
+
"react": ">=19.2.0",
|
|
110
|
+
"react-devtools-core": ">=6.1.2"
|
|
111
|
+
},
|
|
112
|
+
"peerDependenciesMeta": {
|
|
113
|
+
"@types/react": {
|
|
114
|
+
"optional": true
|
|
115
|
+
},
|
|
116
|
+
"react-devtools-core": {
|
|
117
|
+
"optional": true
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"ava": {
|
|
121
|
+
"workerThreads": false,
|
|
122
|
+
"serial": true,
|
|
123
|
+
"files": [
|
|
124
|
+
"test/**/*",
|
|
125
|
+
"!test/helpers/**/*",
|
|
126
|
+
"!test/fixtures/**/*"
|
|
127
|
+
],
|
|
128
|
+
"extensions": {
|
|
129
|
+
"ts": "module",
|
|
130
|
+
"tsx": "module"
|
|
131
|
+
},
|
|
132
|
+
"nodeArguments": [
|
|
133
|
+
"--import=tsx"
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
"prettier": "@vdemedes/prettier-config"
|
|
137
|
+
}
|
package/docker/Dockerfile
CHANGED
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
# ============================================================================
|
|
10
10
|
FROM nixos/nix:2.19.2 AS builder
|
|
11
11
|
|
|
12
|
-
# Configuration Nix pour permettre les builds
|
|
12
|
+
# Configuration Nix pour permettre les builds et activer flakes
|
|
13
13
|
# Note: sandbox=false required for Docker-in-Docker compatibility
|
|
14
14
|
RUN echo "sandbox = false" >> /etc/nix/nix.conf && \
|
|
15
|
-
echo "filter-syscalls = false" >> /etc/nix/nix.conf
|
|
15
|
+
echo "filter-syscalls = false" >> /etc/nix/nix.conf && \
|
|
16
|
+
echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf
|
|
16
17
|
|
|
17
18
|
# Copier les fichiers de configuration des skills
|
|
18
19
|
COPY docker/skills/rtk-config.toml /opt/sith/skills/rtk-config.toml
|
|
@@ -24,9 +25,11 @@ COPY docker/nix/ /opt/sith/nix/
|
|
|
24
25
|
# Configurer npm pour utiliser le registry public
|
|
25
26
|
RUN echo "registry=https://registry.npmjs.org/" > /root/.npmrc
|
|
26
27
|
|
|
27
|
-
#
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
# Generate flake.lock and pre-build environment with profile
|
|
29
|
+
RUN cd /opt/sith/nix && \
|
|
30
|
+
nix flake lock && \
|
|
31
|
+
nix develop --profile /opt/sith/nix-profile --command echo '✅ Flake environment cached' && \
|
|
32
|
+
nix-store --gc --print-dead
|
|
30
33
|
|
|
31
34
|
# Installer OpenCode CLI via script officiel
|
|
32
35
|
RUN nix-shell /opt/sith/nix/shell.nix --run " \
|
|
@@ -46,10 +49,11 @@ LABEL description="OpenCode CI/CD avec Nix, GitHub Copilot et skills d'optimisat
|
|
|
46
49
|
LABEL version="2.3.0"
|
|
47
50
|
LABEL org.opencontainers.image.source="https://github.com/MerzoukeMansouri/sith"
|
|
48
51
|
|
|
49
|
-
# Configuration Nix pour permettre les builds
|
|
52
|
+
# Configuration Nix pour permettre les builds et activer flakes
|
|
50
53
|
# Note: sandbox=false required for Docker-in-Docker compatibility
|
|
51
54
|
RUN echo "sandbox = false" >> /etc/nix/nix.conf && \
|
|
52
|
-
echo "filter-syscalls = false" >> /etc/nix/nix.conf
|
|
55
|
+
echo "filter-syscalls = false" >> /etc/nix/nix.conf && \
|
|
56
|
+
echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf
|
|
53
57
|
|
|
54
58
|
# Copier les fichiers de configuration des skills depuis builder
|
|
55
59
|
COPY --from=builder /opt/sith/ /opt/sith/
|
|
@@ -99,13 +103,13 @@ ENV CAVEMAN_AUTO=true
|
|
|
99
103
|
# Healthcheck pour vérifier que l'environnement est prêt
|
|
100
104
|
# Note: RTK check is conditional on RTK_ENABLED to avoid false failures
|
|
101
105
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
102
|
-
CMD
|
|
106
|
+
CMD cd /opt/sith/nix && nix develop --command sh -c "opencode --version && ([ \"\$RTK_ENABLED\" = \"false\" ] || command -v rtk)" || exit 1
|
|
103
107
|
|
|
104
108
|
# Répertoire de travail pour les projets
|
|
105
109
|
WORKDIR /workspace
|
|
106
110
|
|
|
107
|
-
# Point d'entrée via nix
|
|
108
|
-
ENTRYPOINT ["
|
|
111
|
+
# Point d'entrée via nix develop (flakes) with cached profile
|
|
112
|
+
ENTRYPOINT ["sh", "-c", "cd /opt/sith/nix && nix develop --offline --command"]
|
|
109
113
|
|
|
110
114
|
# Commande par défaut
|
|
111
115
|
CMD ["opencode --help"]
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"nodes": {
|
|
3
|
+
"flake-utils": {
|
|
4
|
+
"inputs": {
|
|
5
|
+
"systems": "systems"
|
|
6
|
+
},
|
|
7
|
+
"locked": {
|
|
8
|
+
"lastModified": 1731533236,
|
|
9
|
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
10
|
+
"owner": "numtide",
|
|
11
|
+
"repo": "flake-utils",
|
|
12
|
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
13
|
+
"type": "github"
|
|
14
|
+
},
|
|
15
|
+
"original": {
|
|
16
|
+
"owner": "numtide",
|
|
17
|
+
"repo": "flake-utils",
|
|
18
|
+
"type": "github"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"nixpkgs": {
|
|
22
|
+
"locked": {
|
|
23
|
+
"lastModified": 1720535198,
|
|
24
|
+
"narHash": "sha256-zwVvxrdIzralnSbcpghA92tWu2DV2lwv89xZc8MTrbg=",
|
|
25
|
+
"owner": "NixOS",
|
|
26
|
+
"repo": "nixpkgs",
|
|
27
|
+
"rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5",
|
|
28
|
+
"type": "github"
|
|
29
|
+
},
|
|
30
|
+
"original": {
|
|
31
|
+
"owner": "NixOS",
|
|
32
|
+
"ref": "nixos-23.11",
|
|
33
|
+
"repo": "nixpkgs",
|
|
34
|
+
"type": "github"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"root": {
|
|
38
|
+
"inputs": {
|
|
39
|
+
"flake-utils": "flake-utils",
|
|
40
|
+
"nixpkgs": "nixpkgs"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"systems": {
|
|
44
|
+
"locked": {
|
|
45
|
+
"lastModified": 1681028828,
|
|
46
|
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
47
|
+
"owner": "nix-systems",
|
|
48
|
+
"repo": "default",
|
|
49
|
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
50
|
+
"type": "github"
|
|
51
|
+
},
|
|
52
|
+
"original": {
|
|
53
|
+
"owner": "nix-systems",
|
|
54
|
+
"repo": "default",
|
|
55
|
+
"type": "github"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"root": "root",
|
|
60
|
+
"version": 7
|
|
61
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
description = "Sith - OpenCode Docker Environment";
|
|
3
|
+
|
|
4
|
+
inputs = {
|
|
5
|
+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
|
|
6
|
+
flake-utils.url = "github:numtide/flake-utils";
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
outputs = { self, nixpkgs, flake-utils }:
|
|
10
|
+
flake-utils.lib.eachDefaultSystem (system:
|
|
11
|
+
let
|
|
12
|
+
pkgs = nixpkgs.legacyPackages.${system};
|
|
13
|
+
|
|
14
|
+
# Load packages from config
|
|
15
|
+
packagesConfig = builtins.fromJSON (builtins.readFile ./nix-config/packages.json);
|
|
16
|
+
|
|
17
|
+
allPackages = pkgs.lib.flatten (
|
|
18
|
+
pkgs.lib.mapAttrsToList (category: config: config.packages) packagesConfig.categories
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
resolvePkg = pkgPath:
|
|
22
|
+
let
|
|
23
|
+
parts = pkgs.lib.splitString "." pkgPath;
|
|
24
|
+
in
|
|
25
|
+
if pkgs.lib.length parts == 1
|
|
26
|
+
then builtins.getAttr (pkgs.lib.head parts) pkgs
|
|
27
|
+
else if pkgs.lib.length parts == 2
|
|
28
|
+
then builtins.getAttr (pkgs.lib.elemAt parts 1) (builtins.getAttr (pkgs.lib.head parts) pkgs)
|
|
29
|
+
else throw "Package path too deep: ${pkgPath}";
|
|
30
|
+
|
|
31
|
+
packages = map resolvePkg allPackages;
|
|
32
|
+
in
|
|
33
|
+
{
|
|
34
|
+
devShells.default = pkgs.mkShell {
|
|
35
|
+
name = "opencode-ci-environment";
|
|
36
|
+
|
|
37
|
+
buildInputs = packages;
|
|
38
|
+
|
|
39
|
+
shellHook = ''
|
|
40
|
+
# Source external setup script
|
|
41
|
+
if [ -f /opt/sith/nix/nix-scripts/setup.sh ]; then
|
|
42
|
+
source /opt/sith/nix/nix-scripts/setup.sh
|
|
43
|
+
fi
|
|
44
|
+
'';
|
|
45
|
+
|
|
46
|
+
LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
|
|
47
|
+
LANG = "en_US.UTF-8";
|
|
48
|
+
LC_ALL = "en_US.UTF-8";
|
|
49
|
+
LC_CTYPE = "en_US.UTF-8";
|
|
50
|
+
|
|
51
|
+
SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
|
|
52
|
+
NIX_SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@m14i/sith",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Turn your context to the dark side. Standardize and share your OpenCode setup with a fully dockerized environment, designed for seamless collaboration and CI integration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"commander": "^12.1.0",
|
|
41
41
|
"execa": "^9.0.0",
|
|
42
42
|
"ink": "^7.0.3",
|
|
43
|
-
"react": "^19.2.6"
|
|
43
|
+
"react": "^19.2.6",
|
|
44
|
+
"update-notifier": "^7.3.1"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
47
|
"@semantic-release/changelog": "^6.0.3",
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
"@semantic-release/npm": "^12.0.1",
|
|
50
51
|
"@types/node": "^20.12.7",
|
|
51
52
|
"@types/react": "^19.2.14",
|
|
53
|
+
"@types/update-notifier": "^6.0.8",
|
|
52
54
|
"@vercel/ncc": "^0.38.1",
|
|
53
55
|
"semantic-release": "^24.2.0",
|
|
54
56
|
"tsx": "^4.7.2",
|