mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-19 16:02:14 +00:00
daab561ec0
* feat(typescript-client): add deleteS3File + optional workspace arg on S3 helpers Customer-requested ergonomics for the TypeScript SDK: - New `deleteS3File(s3object, workspace?)` wrapper around the existing `HelpersService.deleteS3File` (backend endpoint is already there). Saves callers from having to either hand-roll `denoS3LightClientSettings()` + AWS SDK calls, or wire up `HelpersService` directly. - `denoS3LightClientSettings`, `loadS3File`, `loadS3FileStream`, `writeS3File`, and the new `deleteS3File` all gain an optional trailing `workspace?: string` parameter that falls back to the `WM_WORKSPACE` env var via `getWorkspace()`. Mirrors the calling convention customers already expect from helpers like `getVariable` / `runScript`. `build.sh` and `build.jsr.sh` are updated to export `deleteS3File` from both the NPM and JSR entry points. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * chore: regenerate system_prompts auto-generated for new S3 helpers `python system_prompts/generate.py` after adding deleteS3File and the optional workspace param to the existing S3 helpers, so the agent-facing docs (CLI skills, TS SDK prompt, script skills) reflect the new signatures. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
221 lines
5.7 KiB
Bash
Executable File
221 lines
5.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eou pipefail
|
|
script_dirpath="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
rm -rf "${script_dirpath}/src"
|
|
|
|
npx --yes @hey-api/openapi-ts@0.43.0 --input "${script_dirpath}/../backend/windmill-api/openapi.yaml" --output "${script_dirpath}/src" --useOptions --schemas false
|
|
cat <<EOF - src/core/OpenAPI.ts > temp_file && mv temp_file src/core/OpenAPI.ts
|
|
const getEnv = (key: string) => {
|
|
if (typeof window === "undefined") {
|
|
if (typeof process !== "undefined") {
|
|
return process?.env?.[key];
|
|
}
|
|
// node
|
|
return globalThis?.process?.env?.[key];
|
|
}
|
|
// browser
|
|
return window?.process?.env?.[key];
|
|
};
|
|
|
|
const baseUrl = getEnv("BASE_INTERNAL_URL") ?? getEnv("BASE_URL") ?? "http://localhost:8000";
|
|
const baseUrlApi = (baseUrl ?? '') + "/api";
|
|
|
|
EOF
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
sed -i '' 's/WITH_CREDENTIALS: false/WITH_CREDENTIALS: true/g' src/core/OpenAPI.ts
|
|
sed -i '' 's/TOKEN: undefined/TOKEN: getEnv("WM_TOKEN")/g' src/core/OpenAPI.ts
|
|
sed -i '' "s/BASE: '\/api'/BASE: baseUrlApi/g" src/core/OpenAPI.ts
|
|
else
|
|
sed -i 's/WITH_CREDENTIALS: false/WITH_CREDENTIALS: true/g' src/core/OpenAPI.ts
|
|
sed -i 's/TOKEN: undefined/TOKEN: getEnv("WM_TOKEN")/g' src/core/OpenAPI.ts
|
|
sed -i "s/BASE: '\/api'/BASE: baseUrlApi/g" src/core/OpenAPI.ts
|
|
fi
|
|
|
|
|
|
|
|
cp "${script_dirpath}/client.ts" "${script_dirpath}/src/"
|
|
cp "${script_dirpath}/s3Types.ts" "${script_dirpath}/src/"
|
|
cp "${script_dirpath}/sqlUtils.ts" "${script_dirpath}/src/"
|
|
echo "" >> "${script_dirpath}/src/index.ts"
|
|
echo 'export type { DenoS3LightClientSettings } from "./s3Types";' >> "${script_dirpath}/src/index.ts"
|
|
echo "" >> "${script_dirpath}/src/index.ts"
|
|
echo 'export { type Base64, setClient, getVariable, setVariable, getResource, setResource, getResumeUrls, setState, setProgress, getProgress, getState, getIdToken, denoS3LightClientSettings, loadS3FileStream, loadS3File, writeS3File, deleteS3File, signS3Objects, signS3Object, getPresignedS3PublicUrls, getPresignedS3PublicUrl, task, taskScript, taskFlow, workflow, step, sleep, parallel, waitForApproval, type TaskOptions, WorkflowCtx, _workflowCtx, setWorkflowCtx, StepSuspend, runScript, runScriptAsync, runScriptByPath, runScriptByHash, runScriptByPathAsync, runScriptByHashAsync, runFlow, runFlowAsync, waitJob, getRootJobId, setFlowUserState, getFlowUserState, usernameToEmail, requestInteractiveSlackApproval, type Sql, requestInteractiveTeamsApproval, appendToResultStream, streamResult, datatable, ducklake, type DatatableSqlTemplateFunction, type SqlTemplateFunction, type S3Object, type S3ObjectRecord, type S3ObjectURI, commitKafkaOffsets } from "./client";' >> "${script_dirpath}/src/index.ts"
|
|
|
|
# Build default export by combining client utilities + services
|
|
# This preserves backward compatibility for `import wmill from "windmill-client"`
|
|
# while enabling tree-shaking for named imports
|
|
cat >> "${script_dirpath}/src/index.ts" << 'INDEXEOF'
|
|
|
|
import {
|
|
setClient,
|
|
getVariable,
|
|
setVariable,
|
|
getResource,
|
|
setResource,
|
|
getResumeUrls,
|
|
setState,
|
|
setProgress,
|
|
getProgress,
|
|
getState,
|
|
getIdToken,
|
|
denoS3LightClientSettings,
|
|
loadS3FileStream,
|
|
loadS3File,
|
|
writeS3File,
|
|
deleteS3File,
|
|
signS3Objects,
|
|
signS3Object,
|
|
getPresignedS3PublicUrls,
|
|
getPresignedS3PublicUrl,
|
|
task,
|
|
taskScript,
|
|
taskFlow,
|
|
workflow,
|
|
step,
|
|
sleep,
|
|
parallel,
|
|
waitForApproval,
|
|
WorkflowCtx,
|
|
_workflowCtx,
|
|
setWorkflowCtx,
|
|
StepSuspend,
|
|
runScript,
|
|
runScriptAsync,
|
|
runScriptByPath,
|
|
runScriptByHash,
|
|
runScriptByPathAsync,
|
|
runScriptByHashAsync,
|
|
runFlow,
|
|
runFlowAsync,
|
|
waitJob,
|
|
getRootJobId,
|
|
setFlowUserState,
|
|
getFlowUserState,
|
|
usernameToEmail,
|
|
requestInteractiveSlackApproval,
|
|
requestInteractiveTeamsApproval,
|
|
appendToResultStream,
|
|
streamResult,
|
|
datatable,
|
|
ducklake,
|
|
SHARED_FOLDER,
|
|
getWorkspace,
|
|
getStatePath,
|
|
getInternalState,
|
|
setInternalState,
|
|
getResumeEndpoints,
|
|
getResult,
|
|
getResultMaybe,
|
|
resolveDefaultResource,
|
|
databaseUrlFromResource,
|
|
base64ToUint8Array,
|
|
uint8ArrayToBase64,
|
|
parseS3Object,
|
|
commitKafkaOffsets,
|
|
} from "./client";
|
|
|
|
import {
|
|
AdminService,
|
|
AuditService,
|
|
FlowService,
|
|
GranularAclService,
|
|
GroupService,
|
|
JobService,
|
|
ResourceService,
|
|
VariableService,
|
|
ScriptService,
|
|
ScheduleService,
|
|
SettingsService,
|
|
UserService,
|
|
WorkspaceService,
|
|
TeamsService,
|
|
} from "./services.gen";
|
|
|
|
const wmill = {
|
|
// Client utilities
|
|
setClient,
|
|
getVariable,
|
|
setVariable,
|
|
getResource,
|
|
setResource,
|
|
getResumeUrls,
|
|
setState,
|
|
setProgress,
|
|
getProgress,
|
|
getState,
|
|
getIdToken,
|
|
denoS3LightClientSettings,
|
|
loadS3FileStream,
|
|
loadS3File,
|
|
writeS3File,
|
|
deleteS3File,
|
|
signS3Objects,
|
|
signS3Object,
|
|
getPresignedS3PublicUrls,
|
|
getPresignedS3PublicUrl,
|
|
task,
|
|
taskScript,
|
|
taskFlow,
|
|
workflow,
|
|
step,
|
|
sleep,
|
|
parallel,
|
|
waitForApproval,
|
|
WorkflowCtx,
|
|
_workflowCtx,
|
|
setWorkflowCtx,
|
|
StepSuspend,
|
|
runScript,
|
|
runScriptAsync,
|
|
runScriptByPath,
|
|
runScriptByHash,
|
|
runScriptByPathAsync,
|
|
runScriptByHashAsync,
|
|
runFlow,
|
|
runFlowAsync,
|
|
waitJob,
|
|
getRootJobId,
|
|
setFlowUserState,
|
|
getFlowUserState,
|
|
usernameToEmail,
|
|
requestInteractiveSlackApproval,
|
|
requestInteractiveTeamsApproval,
|
|
appendToResultStream,
|
|
streamResult,
|
|
datatable,
|
|
ducklake,
|
|
SHARED_FOLDER,
|
|
getWorkspace,
|
|
getStatePath,
|
|
getInternalState,
|
|
setInternalState,
|
|
getResumeEndpoints,
|
|
getResult,
|
|
getResultMaybe,
|
|
resolveDefaultResource,
|
|
databaseUrlFromResource,
|
|
base64ToUint8Array,
|
|
uint8ArrayToBase64,
|
|
parseS3Object,
|
|
commitKafkaOffsets,
|
|
// Services
|
|
AdminService,
|
|
AuditService,
|
|
FlowService,
|
|
GranularAclService,
|
|
GroupService,
|
|
JobService,
|
|
ResourceService,
|
|
VariableService,
|
|
ScriptService,
|
|
ScheduleService,
|
|
SettingsService,
|
|
UserService,
|
|
WorkspaceService,
|
|
TeamsService,
|
|
};
|
|
|
|
export default wmill;
|
|
INDEXEOF
|